鍍金池/ 問答/Java  數(shù)據(jù)庫/ 關(guān)于中文搜索分詞與索引的問題

關(guān)于中文搜索分詞與索引的問題

我們知道搜索大體分為兩步,首先對文檔集做索引,然后處理查詢,做好的索引可能會使用很長一段時間。

對于中文搜索,做索引時要對文檔分詞,處理查詢時要對查詢串分詞。
問題是,如果做索引時的分詞結(jié)果,不同于查詢處理時的分詞結(jié)果,那還能找到嗎?

舉個例子,做索引時,“區(qū)塊鏈”一詞不太流行,詞典里沒有,結(jié)果分詞算法分成了“區(qū)塊”和“鏈”兩個詞,存入數(shù)據(jù)庫的也是這兩個詞。
后來過了幾個月(甚至年),該詞越來越流行,于是網(wǎng)站管理員把它添加到了“熱門詞典”里以便提升分詞質(zhì)量。從這一刻起,新來的查詢?nèi)舭皡^(qū)塊鏈”,將作為單個詞保留下來。不幸的是,除非有包含該詞的新文檔加入,否則因為數(shù)據(jù)庫里根本沒有這個詞導(dǎo)致搜索失敗,即使存在一些舊文檔包含該詞。

請問這種困境該如何應(yīng)對呢?當(dāng)然,一種做法是把“區(qū)塊”和“鏈”這倆詞重新做索引……這個太不方便了,有沒有更好的辦法?

求思路,謝謝!

回答
編輯回答
墨沫

前面啰嗦得太多,我再把問題精簡一下:

如何設(shè)計詞索引,使得 —— 若 將來 改進了分詞算法,在不重建索引的情況下,搜索結(jié)果也能改進?

例如,當(dāng)詞典沒有“區(qū)塊鏈”一詞時,搜索結(jié)果可能包含大量“區(qū)塊”和“鏈”兩個詞的文檔;當(dāng)把“區(qū)塊鏈”加入詞典后,在不重建索引的情況下,立即就能找到包含“區(qū)塊鏈”的文檔,排名在包含“區(qū)塊”和“鏈”兩個詞的文檔前面。

2017年8月15日 17:00