2013-07-26 85 views
4

我正在尝试使用mongodb全文搜索来显示用户正在键入的建议。 我已经完成了所有必要的步骤来创建文本索引并启用数据库上的全文搜索功能,并且除了结果的精确度外,一切工作都正常。Mongodb全文搜索匹配precesion

我正在使用正则表达式来实现相同的逻辑,例如当用户键入'蓝色',然后有一个建议,其中包含'蓝牙'的东西类似于'蓝色*',但使用mongos全文搜索我得到一个结果只有当我输入'bluetoot'时。

我已经使用了试图“字符精确匹配如‘\‘蓝\’’和所有其他可以想象的组合,我能想到的,却徒劳无功。

所以我的问题是,如果有一种方法来实现这在蒙戈? 如果蒙戈支持像在正则表达式中使用*字符或所使用的算法试图做一个字的精确匹配?

问候, 马克西莫斯

回答

6

目前,MongoDB的文本搜索不支持在部分单词上进行搜索,命令与单词匹配完整的词干 - 很可能“蓝牙”和“bluetoot”干的是同一根,这就是为什么该搜索词正在工作,而“蓝色”不是。 (Source.)MongoDB的文本搜索使用开源的stemmer Snowball。

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