0
我目前在MongoDB中有全文搜索功能的一些问题。特别是当试图匹配确切的短语。MongoDB全文搜索 - 匹配单词和确切短语
我正在测试mongo shell中的功能,但最终我将使用Spring Data MongoDB和Java。
所以我第一次尝试运行此命令来搜索词“延迟”,“迟到”和“时间”一词
db.mycollection.find({ $text: { $search: "delay late \"on time\"" } }).explain(true);
并将得到解释查询的告诉我说:
"parsedTextQuery" : {
"terms" : [
"delay",
"late",
"time"
],
"negatedTerms" : [ ],
"phrases" : [
"on time"
],
"negatedPhrases" : [ ] },
这里的问题是我不想搜索单词“时间”,而是“按时”。我确实想要寻找延迟和迟到,理想情况下不想阻止词干。
我尝试了一些不同的排列,例如
db.mycollection.find({ $text: { $search: "delay late \"'on time'\"" } }).explain(true);
db.mycollection.find({ $text: { $search: "delay late \"on\" \"time\"" } }).explain(true);
但似乎无法得到正确的结果。关于这方面的文档我看不出任何明显的东西。
为了我的目的,我应该使用单词的全文搜索和短语的正则表达式搜索功能吗?
目前正在使用MongoDB版本2.6.5。谢谢。
嗨,感谢您的回复。我得到了与您的示例相同的结果,我想我的困惑仍然围绕您提供的第三个示例查询。 在第三个例子中,我会希望查询匹配你记录的第三和第二条记录,因为第二条记录匹配“迟到”和“延迟”。 我想我无法理解它是否在查找短语时忽略了其他术语? – robarthur1 2015-02-09 08:35:13
经过一番搜索之后,我得到的印象是,当搜索一个短语时,它使用逻辑AND而不是OR,它使用单个单词。 您是否知道使用逻辑OR搜索多个单词和短语的方法,而无需运行多重查询和重复过滤?谢谢。 – robarthur1 2015-02-09 09:09:00
你能给我一个你想要的例子吗?我认为这对我来说是最容易理解的。这个问题应该是一个新问题,我想。 – wdberkeley 2015-02-09 15:45:46