MongoDB排除了文本搜索的完全匹配

时间:2018-01-23 01:27:05

标签: node.js mongodb mongodb-query full-text-search

我使用MongoDB的全文搜索功能来搜索数据库中的特定字符串。但是,当我使用$search运算符(我使用MongoDB的本机Node.js驱动程序)时,我知道的结果将提供最佳匹配出现了。例如,我有一个字符串" CSCE-314:Programming Languages"。数据库中没有其他字符串具有" CSCE-314"在里面。但是,当我搜索" CSCE-314"时,我得到的结果包含" CSCE"或" 314",但不包括" CSCE" " 314":Example Search Query

搜索查询如下:

{
   "$text": {
      "$search": "CSCE-314"
   }
}

我已经仔细检查过该系列中是否存在匹配的文件。

那是什么给了什么?

编辑:我已经包含了我的Mongo shell命令和结果。很明显,search集合包含" CSCE-314"。

Mongo Shell and Results

编辑2:包含搜索结果。

enter image description here

3 个答案:

答案 0 :(得分:0)

在您的架构中,为您要执行搜索操作的字段定义Stringenter image description here

答案 1 :(得分:0)

我是个白痴。我之后包括了一些额外的操作,其中一个操作是,在根据得分将提供的光标转换为已排序的数组后,执行以下操作:

malloc/calloc

在索引10之后提取数组的所有结果。

答案 2 :(得分:0)

Mongodb寻找在搜索中指定的任何单词。假设您有3个文档。

{txt:"frog"}
{txt:"worm"}
{txt:"frog worm"}

如果您搜索“ from worm”-mongodb将返回所有3个文档。因为它们全部包含您在搜索中指定的某些单词。 要查找确切的字符串,可以使用引号:'"word1 word2" word3'

因此下一个查询将仅返回一个文档:

DB.my_collection.find({$text: {$search: '"frog worm"'}}); // notice double quotes