mmseg4j-1.9 solr4 bug 處理

目前 中文分詞mmseg4j  在 solr4 下是不能正常工做的。
解決方法可簡單了, 只是solr4 接口有點變化 。

中文分詞mmseg4插件的做者 沒及時的跟上"solr4 接口"變化。 雖然分詞算法是對的,添加的文檔不能建索引。

源碼80M讀是讀不懂的。在源碼裏猜想查找 不能新建索引這個的緣由,比較費勁,差點沒找到,結果仍是「湊巧」給找到了。

bug描述:
(1)java.lang.RuntimeException: java.lang.NoSuchMethodError: org.apache.l
ucene.analysis.Tokenizer.reset
報錯信息
http://code.google.com/p/mmseg4j/issues/detail?id=31 我是在分詞測試時碰到這樣的錯誤的。
解決方法

這裏的這個文件裏的setReader 是新版solr4提供的。舊的接口reset 已通過期。
(2)
不能建索引 的相關描述:http://code.google.com/p/mmseg4j/issues/detail?id=38
緣由:MMSegTokenizer 仍是按之前版本的的solr 接口的。
          MMSegTokenizer 在solr 裏是緩存的,它和詞庫都是啓動時就緩存了。 在後續有新的的短語要分詞時,就會調用這個MMSegTokenizer.reset 方法把新詞傳進來,傳給MMSegTokenizer。 但新版solr4裏已經不調用這個reset方法了(也就是上圖顯示的那個reset方法),而是調用setReader ,這樣MMSegTokenizer 實際分詞的對象mmSeg就得不到新數據。因而 我加了下面的hack 代碼,讓mmSeg能獲得新數據。

解決方法
java

mmseg4j-1.9 solr4 bug 處理 - wxf4150 - 飛的博客

 
找到MMSegTokenizer.java 這個文件打開 上圖 框裏的內容是我新加的。 本身找到mmSeg對象加上一個ReaderStatus 屬性默認值填0。
而後編譯這個包。再放到solr 裏去。重啓tomcat 就能工做了。

這裏上傳不了附件, 編譯後的結果我就不提交了,你們本身改吧。
不知道google 空間的代碼,做者什麼時間改,咱們就能直接用了。算法

相關文章
相關標籤/搜索