ES笔记:IK分词器
ES中文档按照分词进行检索,对于中文,ES默认按照单个字进行分词,非常低效,可以使用专门的中文分词器,如IK分词器。
下载: https://github.com/medcl/elasticsearch-analysis-ik/releases
安装: 在ES的plugins目录下新建一个目录,将下载的IK分词压缩包解压到此目录即可,然后重启ES该分词器便会生效。
IK分词器提供了两种分词算法:ik_smart(最少切分)和ik_max_word(细粒度切分)。这两种分词算法都会根据默认的“词典”进行切分,所有的“词典”配置文件都在config目录下的dic文件中。
如果想要添加自定义的词典,可以在config目录下新建自己的dic文件,如 my.dic
,然后将该文件配置在 IKAnalyzer.cfg.xml
中的ext_dict节点,如 <entry key="ext_dict">my.dic</entry>
,然后重启ES即可。
ik_smart示例:切分结果只是切分了一次
GET _analyze
{
"analyzer": "ik_smart", # 指定分析器,默认的分析器是内置的standard分析器
"text": "开发工具"
}
分词结果:
{
"tokens" : [
{
"token" : "开发工具",
"start_offset" : 0,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 0
}
]
}
ik_max_word示例:切分出更多结果
GET _analyze
{
"analyzer": "ik_max_word",
"text": "开发工具"
}
分词结果
{
"tokens" : [
{
"token" : "开发工具",
"start_offset" : 0,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "开发",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "工具",
"start_offset" : 2,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 2
}
]
}