嗨我的全文搜索有一个大问题,我有一个包含1000万个文档的集合,在索引字段中有很多常用单词,例如:what,as,like,how,hi,hello等。
当我用“hi”这个单词做一个serch时,搜索变得超级慢,大约需要30分钟来搜索结果,另一方面当我做同样的事情但是用一个不常见的单词时搜索速度超快花费不到30毫秒。 我不知道会出现什么问题。
我的文字索引:
db.themes.createIndex({"theme":"text"})
和我运行的查询:
db.themes.find({$text: {$search: "hi"}}, {score: {$meta: "textScore"}}).sort({score:{$meta:"textScore"}}).limit(20)
答案 0 :(得分:0)
那是怎么回事。虽然mongodb提供全文功能,但性能与流行的文本搜索引擎不相上下。
你可能会在互联网上发现,大多数实现都会使用mongodb实现弹性搜索以进行搜索优化。您可以使用弹性搜索或Solr进行操作。
答案 1 :(得分:0)
MongoDB的文本搜索在大型集合上显得非常慢。我也不喜欢自动认为“詹姆斯邦德”是OR的方式,但这是另一个故事...(对于AND,需要搜索“\”James \“\”Bond \“”这是不优雅的最好的)。
如果您的应用允许,可以通过过滤其他字段来解决此问题。为此,需要是一个平等,它不能是$ gt等。你可能必须要有创造力才能解决这个问题......我把我的城市分组在“大都市区”(这需要一段时间......),现在我可以通过{metro:“DC”进行搜索,{$ text: {$ search:“pizza”}}。