中文分詞
1. smartch
solr安裝包有提供smartch中文分詞,在solr-7.5.0\contrib\analysis-extras\lucene-libs下,因為我這裡使用7.5所以名稱為lucene-analyzers-smartcn-7.5.0.jar
將lucene-analyzers-smartcn-7.5.0.jar複製到solr-7.5.0\server\solr-webapp\webapp\WEB-INF\lib
再來就是到managed-schema配置 fieldType,添加smartch中文分詞配置
在重新啟動就可以使用拉 是不是很簡單
#solr.cmd restart -p 8983
在solr管理介面選擇左側的analysis進行測試, Analyse Fieldname / FieldType選擇text_smartcn
但是我覺得smartch的中文詞會超少的還斷的不好超多詞彙都會被拆開,所以我不推薦使用
我後面又測試IK Analyzer 不僅支援中文還支援英文 缺點就是中文是簡體
在進行.net串接時 我是將文檔轉成簡體upload
query回傳的也轉成簡體
根本很多此一舉 但是在不動solr的基礎下 我最喜歡ik因為他query出來的值最符合
2. IK Analyzer
先下載solr7版本的ik分詞器,下載地址:https://search.maven.org/search?q=com.github.magese
一樣把jar檔放到solr-7.5.0\server\solr-webapp\webapp\WEB-INF\lib目錄底下
然後到solr-7.5.0\server\solr\gettingstarted\conf目錄中打開managed-schema文件,新增如下代碼
useSmart用來制定是否使用智能分詞
重新啟動solr後到analysis測試效果
比較一下繁體跟簡體的差別,簡體真的分得很好
3. jieba結巴分詞
用python的推結巴,但是我個人對java的結巴抱著觀望的態度
目前用起來也是困難重重
有興趣可以參考這篇去產生jar檔
https://hk.saowen.com/a/02c61ee556348eb44f8c882e914c82ab6f71c72dd93d6ac08e915e42540105af
然後一樣把jar檔放在solr-7.5.0\server\solr-webapp\webapp\WEB-INF\lib目錄底下
然後到solr-7.5.0\server\solr\gettingstarted\conf目錄中打開managed-schema文件,新增如下代碼
因為我還用不到停用詞跟同義詞故先拿掉
一樣重新啟動就可以使用了 測試如下
4. HanLP中文分詞Lucene插件
請參考這篇 https://github.com/hankcs/hanlp-lucene-plugin
將hanlp-portable.jar和hanlp-lucene-plugin.jar放在solr-7.5.0\server\solr-webapp\webapp\WEB-INF\lib目錄底下
然後到solr-7.5.0\server\solr\gettingstarted\conf目錄中打開managed-schema文件,新增如下代碼
有需要其他配置可參考github上的配置語法
一樣重新啟動就可以使用了 測試如下
第4點提供的是Portable版的,比較簡陋,若是需要其他的就要用到HanLP的核心集
5. HanLP中文分詞
請參考這篇 https://callmejiagu.github.io/2018/04/13/Solr-HanLp%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D/
下載插件 http://hanlp.linrunsoft.com/services.html
在solr-7.5.0\server\solr-webapp\webapp\WEB-INF目錄底下創建一個資料夾classes
然後將剛才下載的配置文件
雖然後面我換成這個 但是還是沒達到我的需求hanlp.properties放進去,
在classes目錄底下新建一個資料夾hanlp,
再將下載解壓縮出來的data文件放在hanlp目錄底下
修改配置文件 hanlp.properties,只需要把roort值修改一下即可,預設值如下
例如我的路徑如下
然後到solr-7.5.0\server\solr\gettingstarted\conf目錄中打開managed-schema文件,新增如下代碼
重新啟動後測試如下
哈哈哈 看起來是不是跟Lucene插件結果一樣
其實有些狀態Lucene是無法支援的 不然我也不會多測試hanlp核心的分詞
但是距離當時發生的狀況有一陣子我已經失意了 下次想到再來補充
最後我選擇的是jieba結巴分詞,大家可以依照自己需要的選擇一個分詞來用
留言列表