ElasticSearch中文分词器及热更新词库

 一、中文分词器的使用

1、创建索引

PUT /news2

2、创建模板

POST /news2/text/_mapping
{
        "properties": {
            "content": {
                "type": "text",
                "analyzer": "ik_max_word",       #存储数据分词时使用最细分词粒度
                "search_analyzer": "ik_smart"   #查询数据分词时使用最粗分词粒度
            }
        }

}

3、插入数据

POST /news2/text/1
{"content":"美国留给伊拉克的是个烂摊子吗"}

POST /news2/text/2
{"content":"公安部:各地校车将享最高路权"}

POST /news2/text/3
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}

POST /news2/text/4
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}

4、查询数据

POST /news2/_search
{
    "query" : { "match" : { "content" : "中国" }},
    "highlight" : {
        "pre_tags" : ["<tag1>", "<tag2>"],
        "post_tags" : ["</tag1>", "</tag2>"],
        "fields" : {
            "content" : {}
        }
    }
}

二、热更新中文分词库

第一步:安装nginx

1、配置yum源

cat >> /etc/yum.repos.d/nginx.repo<<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/\$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF

2、下载nginx

yum makecache fast
yum install nginx -y

第二步:编写站点文件作为字典

cat >>/usr/share/nginx/html/my_dic.txt<<EOF
上海
班长
学委
张亚
胖虎
EOF

第三步:重启nginx

nginx -t
systemctl restart nginx

第四步:配置中文分词器插件

vim /etc/elasticsearch/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"></entry>
	 <!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords"></entry>
	<!--用户可以在这里配置远程扩展字典 -->
	<entry key="remote_ext_dict">http://10.0.0.51/my_dic.txt</entry>     #字典位置
	<!--用户可以在这里配置远程扩展停止词字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

第五步:将修改好的IK配置文件复制到其他所有ES节点

cd /etc/elasticsearch/analysis-ik/
scp IKAnalyzer.cfg.xml 10.0.0.52:/etc/elasticsearch/analysis-ik/

第六步:重启所有节点的ES

systemctl restart elasticsearch.service 

第七步:查看日志里字典的词有没有加载出来

展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java