2010年3月22日 星期一

sphinx for chinese 讓 sphinx 加入中文斷詞

上星期測試完 sphinx 後,讓它極快的速度所折服,但是在應用搜尋時就碰到了中國人都會碰到的問題......

沒有中文分詞的搜尋結果似乎有這麼一點點不太符合需求,展轉之間便 google 了市面上較為人知的 2 套支援中文分詞的 sphinx。分別是

sphinx-for-chiness 以及 coreseek

經過一連串的測試後,sphinx-for-chinese比較走原創者的路線,只是在功能中加入支援中文分詞的功能,coressek則是大改之後的版本,相關的設定檔名稱以及指令都有做變動,所以在考慮之後決定使用 sphinx-for-chinese繼續我的搜尋測試之路。

為什麼要用中文分詞呢?
在sphinx的測試程式中,我們可以看到他如果將我們輸入的關鍵字做處理後丟到index去搜尋,例如:

我要搜尋 "皇帝內經"
當沒有使用中文分詞功能時,sphinx會將皇帝內經分成 4 個獨立的字,丟到 index 搜尋,再依照最後的 weight 回傳,所以在某些狀況下,精準度就比較不符合我們的思維。

在使用中文分詞之後,只要在分詞檔中,我們建立
"皇帝 1500"
"內經 1500"

sphinx 便會將皇帝內經分成"皇帝"和"內經"去搜尋,這樣是不是準多了??

再或者我們建立
"皇帝 1500"
"皇帝內經 1501"

sphinx 便會將皇帝內經4個字一起去搜尋,達到 100% match的搜尋。

當然這些中文分詞的內容是要靠經驗以及公司的domain去建立,要從無到有的話,大家就辛苦點吧。

沒有留言: