2017-09-21 295 views
1

我試圖在不丟失詞語的情況下搜索包含文本的多個詞(AND操作) 。MongoDB文本搜索和詞搜索的多個搜索詞

例如:

db.supplies.runCommand( 「文本」,{搜索: 「打印機的墨水」}) 應返回帶(打印機和墨水)或(打印機油墨)或(打印機油墨)的結果或(打印機墨水),而不是使用打印機或墨水的所有結果。

本帖子將搜索多個詞作爲AND操作,但該解決方案不會搜索詞幹詞 - >MongoDB Text Search AND multiple search words

我能想到的唯一的辦法是創造的所有詞的排列,然後運行排列

數(可能是大)的搜索,這可能不是對搜索的有效途徑大集合。

有沒有更好更聰明的方法來做到這一點?

回答

0

那麼有沒有一個原因,你必須使用文本搜索?如果是我,我會使用正則表達式。

https://docs.mongodb.com/manual/reference/operator/query/regex/

關我的頭這樣的事情上。

db.collection.find({products:/printers inks|printers|inks/}) 

現在我想你也可以用文本搜索做同樣的事情。

db.collection.find({$text:{$search : "\"printers inks\" printers inks"}}) 

注意逃脫的引號。

+0

OP要求在每個匹配文檔中存在所有術語。你的兩個答案都過於寬容,它們只與其中一個條款匹配。 –