javascript - MongoDB 带句点的文本搜索

标签 javascript node.js mongodb

我在使用 MongoDB 中的全文搜索功能时遇到一些问题。可以说我有这个:

db.test.insert({fname:"blah.dll"})
db.test.insert({fname:"something.dll"})
db.test.ensureIndex({fname:"text"})

那我就...

db.test.runCommand("text", { search: "blah.dll" })

这将返回两个文档。似乎句点导致它是:blah OR dll。

在这种情况下正确的搜索方法是什么?

谢谢。

最佳答案

正如 Ben Fortune 在对原始问题的评论中指出的那样,您可以通过用引号将搜索词括起来来防止拆分:

db.test.runCommand("text", { search: '"blah.dll"' })

一个重要的问题是,这样做也会改变查询的语义,因为每个引用的单词都需要匹配:

'blah.dll Something' - 返回包含 blah 或 dll 或其他内容的文档。

'blahdll Something' - 返回包含 blahdll 或其他内容的文档。

'“blah.dll”某些内容' - 返回包含 blah.dll(必需)和某些内容(可选)的文档。

'"blah.dll""something"' - 返回包含 blah.dll(必需)和某些内容(必需)的文档。

关于javascript - MongoDB 带句点的文本搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24532117/

相关文章:

javascript - 是否可以在 JavaScript 中更改对象类型的名称?

node.js - 发送 Content-Type : application/json post with node. js

javascript - 条件语句中未呈现内容

php - 制作一个 ScrollView ,当用户向下滚动时更新

javascript - 崇高文本 3 : Build System - node. js。 NPM 模块未执行

node.js - 如何使用node.js中的population从两个表中搜索数据?

javascript - Meteor 显示除当前登录用户之外的所有用户

mongodb - float 在聚合中不匹配

javascript - 如何在 Mongoose 中定义一个不同于 _id 的主键?

javascript - 使用 cypress 访问测试网站提供的 JavaScript 变量