mongodb - MongoDB 中的反向搜索词 - 包含关键字的数据库
问题描述
对于我的情况,我的搜索词和数据库条目是相反的。我有一个包含关键字(通常是 1 或 2 个单词)的数据库,并且我有想要与我的数据库条目进行比较的字符串(通常是 3-5 个单词)。
例如,这里有两个文档(数万个)保存在数据库的一个集合中:
{ _id: 1, keyword: "John Smith" },
{ _id: 2, keyword: "Apple" }
然后,我有以下字符串:
"John Smith wins the award",
"Apple.com",
"Apple Keynote Presentation"
如您所见,我的搜索词和数据库条目是相反的。我想搜索数据库以查找我的字符串中是否存在具有“关键字”属性的文档。注意:我一次处理一个字符串(如“Apple.com”),并提供多个字符串,仅用于说明目的。
我可以从数据库中取出所有文档,并通过遍历每个关键字来查看字符串是否包含关键字,但出于性能原因,如果可能的话,最好在数据库中找到查询它们的匹配项。
有没有办法在不将关键字从数据库中取出的情况下检查字符串是否包含关键字?
解决方案
您可以使用文本索引轻松实现它。只需将文本索引添加到您的集合中,如下所示:
db.collection.createIndex({ keyword: "text" })
然后发出这样的文本搜索命令:
db.collection.find({ $text: { $search: 'John Smith wins the award' } })
这解释了它是如何工作的。
推荐阅读
- linux - 为 Beaglebone debian 加载 UART 时面临的问题
- java - 如何修复数据驱动(DataProvider)中的 stackOverFlow 错误
- javascript - 如何在贪吃蛇游戏中创建碰撞?
- javascript - 具有力布局的散点图
- reactjs - 绑定元素 'input' 隐含地具有 redux 形式的 'any' 类型
- javascript - 在第二次点击时转义标签
- javascript - 创建更新时间和日期函数
- google-sheets - 带条件的导入范围函数以删除特殊字符
- ms-access - 控制 Access 数据库中的重复键
- sql - SQL优化GROUP BY同表同列