2013-07-26 83 views
4

我正在嘗試使用mongodb全文搜索來顯示用戶正在鍵入的建議。 我已經完成了所有必要的步驟來創建文本索引並啓用數據庫上的全文搜索功能,並且除了結果的精確度外,一切工作都正常。Mongodb全文搜索匹配precesion

我正在使用正則表達式來實現相同的邏輯,例如當用戶鍵入'藍色',然後有一個建議,其中包含'藍牙'的東西類似於'藍色*',但使用mongos全文搜索我得到一個結果只有當我輸入'bluetoot'時。

我已經使用了試圖「字符精確匹配如‘\‘藍\’’和所有其他可以想象的組合,我能想到的,卻徒勞無功。

所以我的問題是,如果有一種方法來實現這在蒙戈? 如果蒙戈支持像在正則表達式中使用*字符或所使用的算法試圖做一個字的精確匹配?

問候, 馬克西莫斯

回答

6

目前,MongoDB的文本搜索不支持在部分單詞上進行搜索,命令與單詞匹配完整的詞幹 - 很可能「藍牙」和「bluetoot」乾的是同一根,這就是爲什麼該搜索詞正在工作,而「藍色」不是。 (Source.)MongoDB的文本搜索使用開源的stemmer Snowball。

如果你仍然有興趣實現自動完成,使用正則表達式或外部自動完成庫(可能是Typeahead.js?)可能是你最好的選擇。例如,如果您想推薦文章標題,則可以每隔幾天將標題緩存到json文件,並將該json數據傳遞給Typeahead.js。