[英]MongoDb fulltext search AND condition
我嘗試在 mongodb 中使用文本索引: {$text: {$search: 'sport hockey'}}
是使用 OR 條件按短語搜索:'sport' OR 'hockey'。 例如,結果可以是以下標題列表:
最相關的文件位於第二個位置(實際上我想排除除此之外的所有其他結果:“運動是曲棍球”)。 是否可以在 $text 中使用 AND 條件?
引號不合適,因為{$text: {$search: "\\"sport hockey\\""}}
使用完全匹配搜索。
嘗試在輸出中包含 textScore,然后按它排序以獲取最相關的文檔(可選地使用 limit 來獲取前 n 個相關文檔)。
db.your_collection.find(
{
$text: { $search: "sport hockey" }
}, {
score: { $meta: "textScore" }
}
).sort(
{
score: { $meta: "textScore" }
}
).limit(2)
文本搜索不提供這種現成的。 但是有兩種可能的解決方法。
使用 2.6 之前的解決方案進行文本搜索:將文本字段分解為單個單詞,並將單個單詞作為數組安全地保存在同一文檔中。 然后,您可以對該數組執行$all查詢。
對每個單詞執行單獨的文本搜索,並在應用層生成集合交集。
用作關注
db.your_collection.find({$text:{$search:'“運動”“曲棍球”'}})
必須包含“文本”類型的搜索詞!
對於再次訪問此線程的任何人,可以使用以下查找查詢來實現所需的“AND”搜索條件
{$text:{$search:"\"sport\" \"hockey\""}}
注意不同的單詞是如何轉義的。
在節點 js 中,可以執行以下操作來為“AND”條件創建搜索文本
searchText = '"' + userInput.split(" ").join('" "') + '"';
然后
collectionObj.find({$text:{$search:searchText}})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.