ES本身提供了很多分词器,但是这些默认的分词器对于处理中文来说并不理想。例如,使用standard
分词器对以下内容进行分词测试。
POST /_analyze
{
“分词器”:“标准”,
“文本”:“苹果真甜”
}
最终分词结果如下:
{
“代币” : [
{
“代币” : “苹果”,
“开始偏移” : 1,
“结束_偏移” : 1,
“类型” : “” ,
“位置” : 0
},
{
“代币” : “果”,
“开始偏移” : 1,
“结束偏移” : 2,
“类型” : ” " ,
"位置" : 1
},
{
“代币”:“真”,
"start_offset" : 2,
"end_offset" : 3,
“类型”: "" ,
"位置" : 2
},
{
“令牌” : "甜",
"start_offset" : 3,
"end_offset" :4,
“类型” :“” ,
“位置” : 3
}
]
}
从分词结果可以看出,标准
默认分词器将汉字拆分成单词。这样的分词会导致我们的搜索结果的相关性太低,不适合中文分词。
IK分词器是一款基于java语言开发的开源轻量级中文分词工具包。这也是大家广泛使用的分词器。在ES中,分析器是通过第三方插件来使用的。其项目地址如下: