MongoDB文本搜索精确短语 [英] Mongodb text search exact phrase
本文介绍了MongoDB文本搜索精确短语的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个包含以下文档的集合:
{
"_id" : ObjectId("5ad609a2ac1a8b644180936a"),
"content" : "Coffee and cakes..."
},
{
"_id" : ObjectId("5ad609baac1a8b644180936b"),
"content" : "coffee shop..."
}
文本搜索查询的结果:
find({ $text: { $search: ""coffee shop" cakes" } })
只返回第二个文档,但我希望同时返回两个文档。有什么问题?
推荐答案
此...
find({ $text: { $search: "coffee shop cakes" } })
.将搜索具有content
属性的任何文档,该文档包含&Quot;咖啡&Quot;、&Quot;shop";或&Quot;蛋糕&Quot;
但这...
find({ $text: { $search: ""coffee shop" cakes" } })
.将搜索具有content
属性且包含短语&Quot;Cafee shop&Quot;的任何文档。
我认为,当您提交短语(";cafer";)和一个额外的搜索值(";cake";)时,上述两种行为都是您所期待的。然而,这不是MongoDB处理短语和附加词组合的方式。
发件人the docs:
如果
$search
字符串包含短语和单个术语,则文本搜索将仅匹配包含该短语的文档。
基于these docs查询""coffee shop" cakes"
的计算结果为:
"coffee shop" AND ("cakes" or "coffee" or "shop")
这只与第二个文档正确匹配。
注意:text index docs与此相矛盾,根据那些文档,查询""coffee shop" cakes"
将被评估为:"coffee shop" OR "cakes"
,但您观察到的行为与上面引用的$text
操作员文档一致。
感谢@RahulRaj forraising this issue with MongoDB,他们的回复确认文档不正确:
正如您正确地注意到的,这两个页面之间的文档不一致。我们正在跟踪DOCS-10382中文档的此修复。https://docs.mongodb.com/manual/reference/operator/query/text/#phrases正确描述了此功能的当前实现。
这篇关于MongoDB文本搜索精确短语的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文