MongoDB文本搜索精确短语 [英] Mongodb text search exact phrase

查看:6
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆