共計 1864 個字符,預計需要花費 5 分鐘才能閱讀完成。
本篇內容介紹了“elasticsearch 中文分詞集成怎么實現”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
對于索引可能最關系的就是分詞了 一般對于 es 來說默認的 smartcn 但效果不是很好
一個是 ik 的,一個是 mmseg 的,下面分別介紹下兩者的用法,其實都差不多的,先安裝插件,命令行:
安裝 ik 插件
plugin -install medcl/elasticsearch-analysis-ik/1.1.0
下載 ik 相關配置詞典文件到 config 目錄
unzip ik.zip
rm ik.zip
分詞配置
ik 分詞配置,在 elasticsearch.yml 文件中加上
index:
analysis:
analyzer:
ik:
alias: [ik_analyzer]
type: org.elasticsearch.index.analysis.IkAnalyzerProvider
或
index.analysis.analyzer.ik.type : “ik”
安裝 mmseg 插件:
bin/plugin -install medcl/elasticsearch-analysis-mmseg/1.1.0
下載相關配置詞典文件到 config 目錄
cd config
wget http://github.com/downloads/medcl/elasticsearch-analysis-mmseg/mmseg.zip –no-check-certificate
unzip mmseg.zip
rm mmseg.zip
mmseg 分詞配置,也是在在 elasticsearch.yml 文件中
index:
analysis:
analyzer:
mmseg:
alias: [news_analyzer, mmseg_analyzer]
type: org.elasticsearch.index.analysis.MMsegAnalyzerProvider
或
index.analysis.analyzer.default.type : mmseg
mmseg 分詞還有些更加個性化的參數設置如下
index:
analysis:
tokenizer:
mmseg_maxword:
type: mmseg
seg_type: max_word
mmseg_complex:
type: mmseg
seg_type: complex
mmseg_simple:
type: mmseg
seg_type: simple
這樣配置完后插件安裝完成,啟動 es 就會加載插件。
定義 mapping
在添加索引的 mapping 時就可以這樣定義分詞器
{
page :{
properties :{
title :{
type : string ,
indexAnalyzer : ik ,
searchAnalyzer : ik
},
content :{
type : string ,
indexAnalyzer : ik ,
searchAnalyzer : ik
}
}
}
}
indexAnalyzer 為索引時使用的分詞器,searchAnalyzer 為搜索時使用的分詞器。
java mapping 代碼如下:
XContentBuilder content = XContentFactory.jsonBuilder().startObject()
.startObject(page)
.startObject(properties)
.startObject(title)
.field(type , string)
.field(indexAnalyzer , ik)
.field(searchAnalyzer , ik)
.endObject()
.startObject(code)
.field(type , string)
.field(indexAnalyzer , ik)
.field(searchAnalyzer , ik)
.endObject()
.endObject()
.endObject()
.endObject()
測試分詞可用調用下面 api,注意 indexname 為索引名,隨便指定一個索引就行了
“elasticsearch 中文分詞集成怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!