[Search Server]改善使用者搜尋經驗(四)
中文斷詞算是全文檢索中最討厭問題,想讓全文檢索關鍵字100%如TSQL Like還真麻煩,
一般來說全文檢索為了效能考量,斷詞工具不太可能一個一個字斷,
這不僅讓索引項目變多、硬碟使用空間變多、檢索效能變慢、爬檔案效能變慢...等缺點,
所以後面大部分斷詞程式幾乎都採取名詞(語意)來處理(Token演算該詞彙權重),
但這樣就會讓搜尋結果變差(得透過模糊搜尋彌補,可是Rank又是一問題),
為了改善使用者搜尋經驗,Search Server提供自訂字典和同義字方法來處理,
下面自己記錄一下整個過程。
1.自訂字典
這方法比較不可行,第一不支援繁體中文,
第二重新啟動Search Service後得重新執行完整編目(公司文件數量超過1千3百萬以上),
但我還是測試了一下,我依照MSDN步驟 Custom0004.lex (繁中LCID1028 對應hex:0004)建立該字典無法正確找到我想要的關鍵字
或許我的方法有錯,但想偷吃步看來是行不通了
2.新增同義字
同義字檔案有兩種類型,替換集和擴充集,
透過替換集告知搜尋引擎把使用者輸入字詞替換為另一字詞,
例如我輸入近有鼠患(可能無法找到結果),可以替換為"鼠"和"鼠患"藉以提高搜尋使用者經驗。
或是使用擴充集把使用者輸入字詞同義其他字詞,
例如最常見就是輸入台北市但會找不到臺北市,這時透過擴充集就可以改善。
重點是該方法只需重新啟動服務不須執行任何編目,可說完全符合我現實世界需求
測試中文斷詞
預設比對 搜尋馬城高夜
找不到結果很正常。
我先使用擴充集看看是否可以改善搜尋經驗
修改 tscht.xml 新增相關同義字
預設位置C:\Program Files\Microsoft Office Servers\14.0\Data\Config
注意編碼要為unicode。
將該檔案複製到以下三個config資料夾
C:\Program Files\Microsoft Office Servers\14.0\Data\Office Server\Applications\GUID\Config
ps:該路徑位置MSDN上應該寫錯了。
重新啟動Search Service後再次搜尋
預設比對 搜尋馬城高夜
可以看到我剛剛設定的同義字生效了。
搜尋 城高 也沒問題
搜尋 馬城高
再來測試替換集
預設比對 搜尋勝將趙子龍
輸入這樣的關鍵字找不到是很正常的。
使用替換集加入以下內容,步驟和上面一樣
再次搜尋勝將趙子龍
即可找到相關結果。
參考