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"something' - 返回包含 blah.dll(必需)和某些内容(可选)的文档。

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

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

相关文章:

javascript - eclipse:如何在现有 Android 项目上启用 JavaScript 验证

javascript - 在单独的上下文中运行 js 代码并访问其全局变量

c# - 字段的 MongoDB C# 驱动程序投影

mongodb - 使用golang中的过滤器从mongodb复合集合中获取所有数据

android - 从由 toArray() 转换的 mongodb 查询中获取字段值

javascript - 当按下按钮或将可见设置为 true 时从 JSON 动态创建表单?

javascript - Jsoup DOM是否适用于onload Java脚本?

javascript - 为什么我不能在我的数组中的每个元素上添加一个事件监听器,而不仅仅是在使用 knockout js 时的最后一个

node.js - 通过 Sequelize 使用多个数据存储连接

c++ - Node js 服务器和 c++ 客户端套接字 io 连接,无法发出或读取数据