首页 > 解决方案 > 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”),并提供多个字符串,仅用于说明目的。

我可以从数据库中取出所有文档,并通过遍历每个关键字来查看字符串是否包含关键字,但出于性能原因,如果可能的话,最好在数据库中找到查询它们的匹配项。

有没有办法在不将关键字从数据库中取出的情况下检查字符串是否包含关键字?

标签: mongodbmongodb-query

解决方案


您可以使用文本索引轻松实现它。只需将文本索引添加到您的集合中,如下所示:

db.collection.createIndex({ keyword: "text" })

然后发出这样的文本搜索命令:

db.collection.find({ $text: { $search: 'John Smith wins the award' } })

解释了它是如何工作的。


推荐阅读