我正在創建一個自動完成服務,針對我的mongo db文章集合,其中用戶可以開始輸入文章的標題。它應該在標題中返回所有包含該關鍵字的帖子,並按「總計」字段進行排序。有沒有辦法優化mongo中的自動完成關鍵字查詢
我有一個名爲「lower」的字段,它是我們想要搜索的標題字段的小寫版本,並且它有一個索引集。由於我正在尋找任何關鍵字匹配,我正在對lowerCaseTitle進行正則表達式搜索,以查找出現在標題中任何位置的單詞,而不僅僅是在開頭。
我看着執行計劃,它看起來像掃描每個項目(完整的文章集合有10061項)。我試圖暗示「lower_1」索引和「total_-1」索引,它們看起來很相似,但如果我爲查詢設置了50個限制數,那麼總體索引似乎更好,而且帶有較低的已掃描數字。有什麼我可以做的優化?對於這種全文搜索,我無法想到任何簡單的事情。
"cursor" : "BtreeCursor lower_1",
"nscanned" : 10061,
"nscannedObjects" : 2,
"n" : 2,
"scanAndOrder" : true,
"millis" : 154,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"lower" : [
[
"",
{
}
]
]
}
我想我會做一個&&匹配匹配多個單詞搜索...有沒有建議如何使精確匹配首先顯示?因此,「這是瘋狂的」在先說「這是瘋狂的」和「這是瘋狂的」之前會首先展示上面的例子嗎? – MonkeyBonkey 2012-03-29 23:16:27
我不這麼認爲。如果您需要更高的保真度,我認爲最好使用搜索專用解決方案,例如SolR,該解決方案還支持詞幹,分面搜索,結果排名以及更多與搜索相關的功能。 – mnemosyn 2012-03-30 07:11:31