0
我目前在MongoDB中有全文搜索功能的一些問題。特別是當試圖匹配確切的短語。MongoDB全文搜索 - 匹配單詞和確切短語
我正在測試mongo shell中的功能,但最終我將使用Spring Data MongoDB和Java。
所以我第一次嘗試運行此命令來搜索詞「延遲」,「遲到」和「時間」一詞
db.mycollection.find({ $text: { $search: "delay late \"on time\"" } }).explain(true);
並將得到解釋查詢的告訴我說:
"parsedTextQuery" : {
"terms" : [
"delay",
"late",
"time"
],
"negatedTerms" : [ ],
"phrases" : [
"on time"
],
"negatedPhrases" : [ ] },
這裏的問題是我不想搜索單詞「時間」,而是「按時」。我確實想要尋找延遲和遲到,理想情況下不想阻止詞幹。
我嘗試了一些不同的排列,例如
db.mycollection.find({ $text: { $search: "delay late \"'on time'\"" } }).explain(true);
db.mycollection.find({ $text: { $search: "delay late \"on\" \"time\"" } }).explain(true);
但似乎無法得到正確的結果。關於這方面的文檔我看不出任何明顯的東西。
爲了我的目的,我應該使用單詞的全文搜索和短語的正則表達式搜索功能嗎?
目前正在使用MongoDB版本2.6.5。謝謝。
嗨,感謝您的回覆。我得到了與您的示例相同的結果,我想我的困惑仍然圍繞您提供的第三個示例查詢。 在第三個例子中,我會希望查詢匹配你記錄的第三和第二條記錄,因爲第二條記錄匹配「遲到」和「延遲」。 我想我無法理解它是否在查找短語時忽略了其他術語? – robarthur1 2015-02-09 08:35:13
經過一番搜索之後,我得到的印象是,當搜索一個短語時,它使用邏輯AND而不是OR,它使用單個單詞。 您是否知道使用邏輯OR搜索多個單詞和短語的方法,而無需運行多重查詢和重複過濾?謝謝。 – robarthur1 2015-02-09 09:09:00
你能給我一個你想要的例子嗎?我認爲這對我來說是最容易理解的。這個問題應該是一個新問題,我想。 – wdberkeley 2015-02-09 15:45:46