gpt4 book ai didi

MongoDB - 使用全文搜索搜索单词和短语时的逻辑或

转载 作者:可可西里 更新时间:2023-11-01 09:16:56 27 4
gpt4 key购买 nike

我之前问过一个相关问题,并且按照发帖者的建议创建了这个新问题作为跟进:

MongoDB full text search - matching words and exact phrases

在使用 MongoDB 中的全文搜索功能时,我遇到了一些意外结果的问题,特别是在搜索单词和短语的混合时。

使用发帖者在上一个问题中提供的这个有用示例...

> db.test.drop()
> db.test.insert({ "t" : "I'm on time, not late or delayed" })
> db.test.insert({ "t" : "I'm either late or delayed" })
> db.test.insert({ "t" : "Time flies like a banana" })
> db.test.ensureIndex({ "t" : "text" })

> db.test.find({ "$text" : { "$search" : "time late delay" } }, { "_id" : 0 })
{ "t" : "I'm on time, not late or delayed" }
{ "t" : "Time flies like a banana" }
{ "t" : "I'm either late or delayed" }

> db.test.find({ "$text" : { "$search" : "late delay" } }, { "_id" : 0 })
{ "t" : "I'm on time, not late or delayed" }
{ "t" : "I'm either late or delayed" }

> db.test.find({ "$text" : { "$search" : "late delay \"on time\"" } }, { "_id" : 0 })
{ "t" : "I'm on time, not late or delayed" }

前两个查询的行为与我预期的一样,第一个搜索“time OR late OR delay”,第二个搜索“late OR delay”。

我现在通过阅读文档的这一部分明白了 http://docs.mongodb.org/manual/reference/operator/query/text/#phrases第三个查询包含一个短语,将搜索“late OR delay AND ("on time")”。

我的问题是,是否可以在一个文本查询中搜索“late OR delay OR ("on time")”?

最佳答案

我梳理了 text search 上的文档,恐怕我认为从 MongoDB 2.6 开始这是不可能的。 MongoDB 的文本搜索支持根本不如真正的全文搜索引擎(例如 Solr/使用 Lucene 文本搜索库构建的东西)那么完整。目前,文本查询中不支持 bool 运算符,因此您无法将“late delay\"on time\"”的含义从“(late OR delay) AND (\"on time\")”更改为“late”或延迟或“准时”。可能有一些解决方法涉及存储 token 数组而不是文本或除了文本之外,或者与 ElasticSearch 等全文搜索引擎同步,但我宁愿在推荐任何之前更多地了解查询的用例解决方案。

关于MongoDB - 使用全文搜索搜索单词和短语时的逻辑或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28428288/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com