五、分词(_analyze)
1、基础介绍
一个tokenizer(分词器)接收一个字符流,将之分割为独立的tokens(词元,通常是独立的单词),然后输出tokens流。
官方分词器:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-standard-analyzer.html
如何查看分词效果:
POST _analyze
{
"analyzer": "standard", //指定使用的分词器
"text": "good good study,day day up" //要分词的数据
}
ES默认的分词器对于中文的支持不好,所以需要安装ik分词器!
2、ik分词器安装
-
下载:https://github.com/medcl/elasticsearch-analysis-ik/releases
需要注意:ik分词器的版本需要和ES的版本对应
-
在ES的安装目录中找到plugins文件夹,创建一个ik文件夹
-
将下载好的zip文件,解压到ik文件夹中
-
重启ES即可
-
检查是否安装成功
cmd进入ES的bin目录,输入命令:elastic search-plugin list
3、使用ik分词器
ik分词器有两种:ik_smart (智能) ik_max_word(最大)
POST _analyze
{
"analyzer": "ik_smart",
"text": "好好学习,天天向上"
}
POST _analyze
{
"analyzer": "ik_max_word",
"text": "好好学习,天天向上"
}
4、自定义扩展分词
演示前删除自定义的词
-
问题引出:
并没有将“王晓斌”作为一个词
POST _analyze { "analyzer": "ik_smart", "text": "王晓斌真帅" }
-
修改ik分词器的词库
在ik目录下–>config中的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">wang.dic</entry> <!--用户可以在这里配置自己的扩展停止词字典--> <entry key="ext_stopwords"></entry> <!--用户可以在这里配置远程扩展字典 --> <!-- <entry key="remote_ext_dict">words_location</entry> --> <!--用户可以在这里配置远程扩展停止词字典--> <!-- <entry key="remote_ext_stopwords">words_location</entry> --> </properties>
有两种方式:
1、直接给定一个文件,并放在config的目录下,再引入
<!--用户可以在这里配置自己的扩展字典 --> <entry key="ext_dict">wang.dic</entry>
2、将文件放在远程的项目下,通过ip地址去取即可
<!--用户可以在这里配置远程扩展字典 --> <entry key="remote_ext_dict">http://192.168.2.1/aa.txt</entry>
-
演示
添加wang.dic文档到config目录下,并重启es
感谢b站-尚硅谷-雷丰阳老师
雷丰阳视频地址