【发布时间】:2015-08-27 20:38:02
【问题描述】:
我想创建一个自动完成输入框,在用户输入时显示单词建议。
基本上,我的问题是,当我使用 $text 运算符在文档中搜索字符串时,查询只会匹配完整的词干词。这与如果文档字段包含单词 blueberry 的原因相同,则对术语 blue 的搜索将与文档不匹配。但是,搜索蓝莓或蓝莓都会匹配。
find = {$text: { $search: 'blue' } };
^(不匹配文档上的蓝莓或蓝鸟。)
我希望能够做到这一点。我想将'blueberry'或'bluebird'与'blue'匹配,最初我认为这可以通过使用'starts with'(^)正则表达式来实现,但似乎$text和$search只接受一个字符串;不是正则表达式。
我想知道是否有一种方法可以实现/维护不会过于复杂。到目前为止,我只看到有人试图通过创建一个新集合来实现这一点,结果是使用文本索引在集合中运行 map/reduce。
我不想使用 ElasticSearch 或 Solr,因为我认为这对于我正在尝试做的事情来说太过分了,虽然我有时认为最终我别无选择,但我仍然无法相信没有更简单的方法来实现这一点。
【问题讨论】:
-
你可能想在那里看到我的回答。
标签: node.js mongodb mongoose full-text-search