4

我正在尝试使用 mongodb 全文搜索来显示用户正在输入的建议。我已经完成了所有必要的步骤来创建文本索引并在数据库上启用全文搜索功能,除了结果的精度之外,一切都运行良好。

我正在使用正则表达式来实现相同的逻辑,例如,当用户输入“blue”时,会有一个包含“bluetooth”的建议,类似于“blue*”但使用 mongos 全文搜索我只有在输入时才会得到结果'蓝牙'。

我曾尝试使用 " 字符来完全匹配例如'\"blue\"' 以及我能想到的所有其他可以想象的组合,但都是徒劳的。

所以我的问题是,是否有办法在 mongo 中实现这一点?如果 mongo 支持正则表达式中使用的 * 字符或使用的算法尝试对单词进行精确匹配?

问候,马克西莫斯

4

1 回答 1

8

目前,MongoDB 的文本搜索不支持部分词的搜索。该命令匹配完整的词干词 - 'bluetooth' 和 'bluetoot' 很可能来自同一个词根,这就是为什么该搜索词有效而 'blue' 无效的原因。( Source. ) MongoDB 的文本搜索使用开源词干分析器 Snowball。

如果您仍然对实现自动完成感兴趣,那么使用正则表达式或外部自动完成库(也许是Typeahead.js?)可能是您最好的选择。例如,如果您想建议文章标题,您可以每隔几天将标题缓存到一个 json 文件中,并将该 json 数据传递给 Typeahead.js。

于 2013-09-16T14:44:06.277 回答