0
点赞
收藏
分享

微信扫一扫

2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索


文章目录

  • ​​1.为什么要自定义扩展ES词库呢?​​
  • ​​2.如何自定义扩展词库呢?​​
  • ​​3.Docker安装Nginx​​
  • ​​4.在nginx中保存一个简易词库​​
  • ​​5.修改IK分词器的配置文件,让其指向nginx保存的词库​​
  • ​​6.测试分词效果​​

1.为什么要自定义扩展ES词库呢?

虽然IK-中文分词器已经很强悍了,能够识别大多数的词汇,但是对于网络中新兴的网络词汇是无法识别的(比如“爷青回” “打工人”)

下图是我在Kibana对“爷青回”的分词情况

2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索_搜索引擎


分词结果如下:

2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索_html_02


本身我们想让“爷青回”作为一个词,由于是网络词汇,IK-分词器是无法识别出的,所以需要我们自定义扩展词库

2.如何自定义扩展词库呢?

有两种思路,如下所示:

  • Ⅰ.我们构建一个词库服务器,让IK分词器给我们的词库服务器发送请求即可
  • Ⅱ.使用web服务器保存我们的词库;例如nginx服务器,只需要将我们的词汇保存到nginx,然后让IK分词器向nginx发送请求即可。

3.Docker安装Nginx

(1)新建文件夹方便一会挂载

mkdir -p /mydata/nginx/html
mkdir -p /mydata/nginx/logs
mkdir -p /mydata/nginx/conf

(2)给予这些文件可读可写可执行的权限

cd /mydata/
chmod -R 777 mydata/
-R表示递归mydata下的所有文件给予RWX权限

(3)拉取nginx镜像并运行

docker pull nginx:1.14.2

docker run --name nginx -p 80:80 -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d -v /mydata/nginx/logs:/var/log/nginx -v /mydata/nginx/html:/usr/share/nginx/html -d nginx

–name :表示为该容器起的名字
-p:表示指定端口
-v:表示挂载文件
可以看出我对nginx.conf、conf.d、logs、html进行了文件挂载,方便以后操作

docker ps查看结果

2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索_html_03


在html文件夹下,新建一个a.html文件,向文件里面追加echo “< a> HELLO </ a>”

浏览器访问http://ip:80/a.html(注意如果是云服务器记得将80端口对外开放

2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索_elasticsearch_04


nginx安装成功!


4.在nginx中保存一个简易词库

后期可以自行扩展,编写一个脚本程序,定时爬取各大网站的热点网络词汇,然后更新到该词库即可。

在html目录下,新建一个word-house文件夹

2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索_nginx_05


cd到word-house目录下,新建一个split-word.txt文件,向里面加入如下内容

2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索_elasticsearch_06

5.修改IK分词器的配置文件,让其指向nginx保存的词库

进入es容器内部:docker exec -it elasticsearch /bin/bash

cd到指定目录下:cd /usr/share/elasticsearch/plugins/ik/config

2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索_nginx_07


编辑IKAnalyzer.cfg.xml:vi 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://292.168.56.10/word-house/split-word.txt</entry>
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索_搜索引擎_08

重启ElasticSerach容器:docker restart elasticsearch

6.测试分词效果

重启之后,稍等片刻,访问Kibana

2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索_elasticsearch_09


2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索_elasticsearch_10


查看分词结果

2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索_搜索引擎_11


成功!


举报

相关推荐

0 条评论