Elasticsearch实践(四):IK分词 (2)

2、然后修改elasticsearch-6.2.4/config/analysis-ik/IKAnalyzer.cfg.xml文件:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>IK Analyzer 扩展配置</comment> <!--用户可以在这里配置自己的扩展字典 --> <entry key="ext_dict">my.dic</entry> <!--用户可以在这里配置自己的扩展停止词字典--> <entry key="ext_stopwords"></entry> <!--用户可以在这里配置远程扩展字典 --> <!-- <entry key="remote_ext_dict">words_location</entry> --> <!--用户可以在这里配置远程扩展停止词字典--> <!-- <entry key="remote_ext_stopwords">words_location</entry> --> </properties>

增加了my.dic,然后重启ES。我们再看一下效果:

curl :9200/_analyze/?analyzer=ik_smart&text=去朝阳公园

结果:

{ "tokens": [ { "token": "去", "start_offset": 0, "end_offset": 1, "type": "CN_CHAR", "position": 0 }, { "token": "朝阳公园", "start_offset": 1, "end_offset": 5, "type": "CN_WORD", "position": 1 } ] }

说明自定义词典生效了。如果有多个词典,使用英文分号隔开:

<entry key="ext_dict">my.dic;custom/single_word_low_freq.dic</entry>

另外,我们看到配置里还有个扩展停止词字典,这个是用来辅助断句的。我们可以看一下自带的一个扩展停止词字典:

$ head -n 5 extra_stopword.dic 也 了 仍 从 以

也就是IK分词器遇到这些词就认为前面的词语不会与这些词构成词语。

IK分词也支持远程词典,远程词典的好处是支持热更新。词典格式和本地的一致,都是一行一个分词(换行符用 \n),还要求填写的URL满足:

该 http 请求需要返回两个头部(header),一个是 Last-Modified,一个是 ETag,这两者都是字符串类型,只要有一个发生变化,该插件就会去抓取新的分词进而更新词库。

详见:https://github.com/medcl/elasticsearch-analysis-ik 热更新 IK 分词使用方法 部分。

注意:上面的示例里我们改的是`elasticsearch-6.2.4/config/analysis-ik/目录下内容,是因为IK是通过方法2里elasticsearch-plugin安装的。如果你是通过解压方式安装的,那么IK配置会在plugins目录,即:elasticsearch-6.2.4/plugins/analysis-ik/config。也就是说插件的配置既可以放在插件所在目录,也可以放在Elasticsearch的config目录里面。

ES内置的Analyzer分析器

es自带了许多内置的Analyzer分析器,无需配置就可以直接在index中使用:

标准分词器(standard):以单词边界切分字符串为terms,根据Unicode文本分割算法。它会移除大部分的标点符号,小写分词后的term,支持停用词。

简单分词器(simple):该分词器会在遇到非字母时切分字符串,小写所有的term。

空格分词器(whitespace):遇到空格字符时切分字符串,

停用词分词器(stop):类似简单分词器,同时支持移除停用词。

关键词分词器(keyword):无操作分词器,会输出与输入相同的内容作为一个single term。

模式分词器(pattern):使用正则表达式讲字符串且分为terms。支持小写字母和停用词。

语言分词器(language):支持许多基于特定语言的分词器,比如english或french。

签名分词器(fingerprint):是一个专家分词器,会产生一个签名,可以用于去重检测。

自定义分词器:如果内置分词器无法满足你的需求,可以自定义custom分词器,根据不同的character filters,tokenizer,token filters的组合 。

详见文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html

参考

1、medcl/elasticsearch-analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized dictionary.
https://github.com/medcl/elasticsearch-analysis-ik
2、ElesticSearch IK中文分词使用详解 - xsdxs的博客 - CSDN博客
https://blog.csdn.net/xsdxs/article/details/72853288

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppfwp.html