close

中文分詞

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.jarhanlp-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結巴分詞,大家可以依照自己需要的選擇一個分詞來用

arrow
arrow
    文章標籤
    solr
    全站熱搜

    鴨鴨仔 發表在 痞客邦 留言(0) 人氣()