1. 程式人生 > >Lucene筆記18-Lucene的分詞-實現自定義同義詞分詞器-思路分析

Lucene筆記18-Lucene的分詞-實現自定義同義詞分詞器-思路分析

一、實現自定義同義詞分詞器思路分析

前面文章我們提到同義詞分詞器,這裡我們先來分析下同義詞分詞器的設計思路。

  1. 首先我們有一個需要分詞的字串string,通過new StringReader(string)拿到Reader。
  2. 使用analyzer.tokenStream("content", new StringReader(string))拿到tokenStream,前面講到tokenStream中包含了分詞相關的詳細資訊。
  3. 現在需要做的就是,在拿到tokenStream之前,做一些處理,在獲取tokenStream之前,需要經過Tokenizer和TokenFilter這兩個類的處理,我們需要在TokenFilter中做一些處理。
  4. 於是自定義一個MyTokenFilter類,繼承自TokenFilter類,並在初始化方法中,將CharTermAttribute物件新增進去,這樣,再獲取的時候,就可以輸出分詞資訊了。
  5. 另外,還需要將PositionIncrementAttribute物件新增進去,因為在新增同義詞的時候,要把同義詞和原來的詞放在同一個位置上。
  6. 假設我們有一個map,裡面儲存的就是同義詞詞庫,比如{"北大"="北京大學"}這種類似的資料。第4步獲取到分詞資訊後,就去這個map中去找,如果有同義詞,就將這個同義詞新增到第5步獲取到的位置上。

二、根據流程做圖

大致做了個流程圖,發現自己做圖能力好差啊,以後寫部落格還要多加練習,通常影象帶給人的感覺更直觀一些。

另外附上線上做圖地址:Process On

詳細程式碼請看下一節