說明:es默認的分詞器對中文的識別不是特別好,一段話的分詞是一個一個漢字,這顯然沒有達到想要的結(jié)果。
可以安裝IK分詞器,兼容中文的分詞;
IK分詞器
安裝
安裝IK分詞器,例如elasticsearch的容器名為es;
(命令方式,安裝速度慢,網(wǎng)絡(luò)狀況不好非常容易失敗,而且會丟失文件,不推薦使用)
# 進入容器內(nèi)部
docker exec -it es /bin/bash
# 在線下載并安裝
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
#退出
exit
#重啟容器
docker restart es
(手動拖入)
可以選擇在對應(yīng)網(wǎng)站下載(注意ik版本需要和es版本一致),然后將文件拖入到es容器掛載的數(shù)據(jù)卷目錄下;
# 查看es容器掛載的數(shù)據(jù)卷路徑
docker volume inspect es-plugins
將下載下來的IK分詞器文件,解壓,復(fù)制到此目錄下;
使用
IK分詞器有以下兩種模式:
-
ik_smart:最少切分,最少分詞數(shù)量;
-
ik_max_word:最細切分,最多可分詞數(shù);
使用“ik_smart”模式,可以看右側(cè),分詞是符合中文語境的;
“ik_max_word”模式
擴展詞匯&敏感詞匯排除
有一些人名、名牌、熱詞等詞匯,在分詞時可能會被拆分開,如“王麻子菜刀”,可能被拆分成了“王麻子”、“菜刀”,拆分之后就沒有意義了。這些詞匯可以添加到IK分詞器的擴展字典文件中,使分詞時這些詞匯被作為一個完整的詞劃分。
另外,也有一些詞匯是敏感詞匯(政治、宗教、辱罵等等),我們希望在搜索時,這些分詞不參與分詞和搜索。同樣這類詞匯也可以添加到IK分詞器的停用詞典中,使這類敏感詞匯不參與分詞和搜索。
第一步:修改配置文件
在IK分詞器目錄下,切換到config目錄,打開文件IKAnalyzer.cfg.xml,設(shè)置擴展詞匯和排除詞匯文件名;
IKAnalyzer.cfg.xml文件內(nèi)容
第二步:添加詞匯
分別在擴展詞匯詞典、停用詞典添加對應(yīng)的詞匯
(擴展詞匯文件,ext.dic,該文件不存在,需手動創(chuàng)建)
(停用詞典文件,stopword.dic,新增一個詞匯月亮)
第三步:重啟es
重啟es,測試,可以看到分詞把“毛源昌眼鏡”當(dāng)做一個詞來劃分了,達到了想要的結(jié)果;
同樣,月亮被作停用詞典中的詞匯,未參與分詞;
注意
需要注意的是,如果一個詞匯是一個較為特別的詞匯,如“獨釣寒江雪”;
在分詞排除時不會排除掉,因為在分詞時,這句詞匯不太可能被分為一個完整的詞匯,而在停用詞典中,是根據(jù)完整的詞匯來排除的;
所以,做到萬無一失,應(yīng)該把需要排除分詞的詞匯,先在擴展詞典里添加,然后再在停用詞典里添加,這樣就絕對會被排除掉了;
重啟es,測試,“獨釣寒江雪”被完全排除
總結(jié)
es分詞對中文兼容不太好,可以選擇IK分詞器來使用,IK分詞器有兩種模式,分別是“ik_smart”、“ik_max_word”。文章來源:http://www.zghlxwxcb.cn/news/detail-603520.html
另外,IK分詞器支持對詞匯進行擴展,可以把一些需要綁定在一起的詞匯,不希望被分開的詞匯寫入到擴展詞典中,這些詞匯會被當(dāng)做一個整體參與分詞;同樣如果需要排除一些詞匯,不希望這些詞匯參與分詞,也可以將這些詞匯寫入到停用詞典中。文章來源地址http://www.zghlxwxcb.cn/news/detail-603520.html
到了這里,關(guān)于elasticsearch IK分詞器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!