MongoDb 全文搜索 AND 条件
MongoDb fulltext search AND condition
我尝试在 mongodb 中使用 text-index:
{$text: {$search: 'sport hockey'}}
是使用 OR 条件按词组搜索:'sport' OR 'hockey'。例如,结果可以是以下标题列表:
- 今天做点运动...
- 运动是曲棍球
- 曲棍球运动员
最相关的文档在第二位(实际上我想排除除此以外的所有其他结果:'Sport is hockey')。
是否可以在 $text 中使用 AND 条件?
引号不合适,因为 {$text: {$search: "\"sport hockey\""}}
使用完全匹配搜索。
文本搜索不提供这种开箱即用的功能。但是有两种可能的解决方法。
使用 pre-2.6 解决方案进行文本搜索:将您的文本字段分解为单个单词,并将单个单词作为数组保存在同一文档中。然后,您可以对该数组执行 $all 查询。
对每个词进行单独的文本搜索,并在应用层生成集合交集。
尝试在输出中包含 textScore,然后对其进行排序以获得最相关的文档(可选择使用限制来获取前 n 个相关文档)。
db.your_collection.find(
{
$text: { $search: "sport hockey" }
}, {
score: { $meta: "textScore" }
}
).sort(
{
score: { $meta: "textScore" }
}
).limit(2)
作为关注
db.your_collection.find({$text:{$search:' "sport" "hockey" '}})
"text" type search word must be included!
对于再次访问此线程的任何人,可以使用以下查找查询
来实现所需的 "AND" 搜索条件
{$text:{$search:"\"sport\" \"hockey\""}}
注意不同单词的转义方式。
在节点 js 中,可以执行以下操作来为 "AND" 条件
创建所需的搜索文本
searchText = '"' + userInput.split(" ").join('" "') + '"';
然后
collectionObj.find({$text:{$search:searchText}})
我尝试在 mongodb 中使用 text-index:
{$text: {$search: 'sport hockey'}}
是使用 OR 条件按词组搜索:'sport' OR 'hockey'。例如,结果可以是以下标题列表:
- 今天做点运动...
- 运动是曲棍球
- 曲棍球运动员
最相关的文档在第二位(实际上我想排除除此以外的所有其他结果:'Sport is hockey')。 是否可以在 $text 中使用 AND 条件?
引号不合适,因为 {$text: {$search: "\"sport hockey\""}}
使用完全匹配搜索。
文本搜索不提供这种开箱即用的功能。但是有两种可能的解决方法。
使用 pre-2.6 解决方案进行文本搜索:将您的文本字段分解为单个单词,并将单个单词作为数组保存在同一文档中。然后,您可以对该数组执行 $all 查询。
对每个词进行单独的文本搜索,并在应用层生成集合交集。
尝试在输出中包含 textScore,然后对其进行排序以获得最相关的文档(可选择使用限制来获取前 n 个相关文档)。
db.your_collection.find(
{
$text: { $search: "sport hockey" }
}, {
score: { $meta: "textScore" }
}
).sort(
{
score: { $meta: "textScore" }
}
).limit(2)
作为关注
db.your_collection.find({$text:{$search:' "sport" "hockey" '}})
"text" type search word must be included!
对于再次访问此线程的任何人,可以使用以下查找查询
来实现所需的 "AND" 搜索条件{$text:{$search:"\"sport\" \"hockey\""}}
注意不同单词的转义方式。
在节点 js 中,可以执行以下操作来为 "AND" 条件
创建所需的搜索文本searchText = '"' + userInput.split(" ").join('" "') + '"';
然后
collectionObj.find({$text:{$search:searchText}})