用lucene與ictclas4j建立自己的全文檢索

     lucene是個不錯的逆向索引模塊,而且是開源java的(注意,它盡是個模塊不是套搜索引擎系統,基於它的nutch系統纔是定位於這一目標的)。lucene解決了建索引、檢索、存儲(分佈式存儲要靠另外個咚咚hadoop)等問題。但對於中文檢索中的分詞問題,沒給出個好的解析器。
     ictclas4j是個根據中科院的概率分析系統老版寫的java分詞系統。存在兩個問題,一是隻解決了單句分詞問題,缺乏詞的位置信息。二是存在個bug(包括中科院的那個VC版的),具體bug久了記不清,好像是在分有"/"的句子時會有問題。
     將lucene與ictclas4j還要解決個解析器結構問題。主要是由於lucene處理是採用流式結構,就相當於一個字符流流過解析器,然後不斷從中取出詞。然後,ictclas4j是基於句的。因此需要有個緩衝,先從字符流取出一個完整的句子,然後交給ictclas4j分詞,ictclas4j給出一串詞,然後解析器一個給向lucene返回詞,直到取完,然後再從頭開始,讀字符流、斷句....
     這其中有兩個問題,一是從流中讀數據,讀過了就不能再讀了,但你又無法確定讀多少一句句子結束。這個問題可參看“編譯原理”中詞法分析中的雙緩衝結構解決。二是斷句問題。斷句目前只有通過標點、空格等字符方式斷。
     另外,lucene用於網頁分析,不妨用nekohtml.jar解析HTML文件提取其中的文本,其他開源的幾個好像有點不夠魯棒。當然nekohtml.jar也不是全能的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章