谷粒商城学习——P124 es 自定义扩展词库

摘要:
P122中安装的ik分词系统的默认同义词库不支持某些新词,因此需要修改ik分词系统配置文件并指定远程同义词库以扩展同义词库。您可以向nginx发送请求。nginx返回最新的同义词库。当nginx安装在虚拟机上时,内存不足。关闭虚拟机,打开设置,将内存调整到3075,重新启动,然后扩展es内存。由于前面的映射,扩展es内存的最快方法是删除es并重新创建它。

P122中安装的ik分词器, 本身默认的词库并不支持一些新的词汇,这就需要修改ik分词器的配置文件,指定远程词库进行扩展词库。ik分词器向远程发送请求要到最新的单词,这样最新的单词就会做为新的词源远行分解。可以给nginx发送请求,nginx反回最新词库。

虚拟机装nginx,内存不够,先将虚拟机关机,打开设置,将内存调到3075,然后重启

谷粒商城学习——P124 es 自定义扩展词库第1张

 谷粒商城学习——P124 es 自定义扩展词库第2张

 谷粒商城学习——P124 es 自定义扩展词库第3张

 然后扩大es内存

由于之前做了映射,扩大es内存最快的办法是删了es重新创建。docker ps查看es容器id,docker stop 和rm停掉和删除es容器

谷粒商城学习——P124 es 自定义扩展词库第4张

 转到data文件夹下,创建es

[root@10 data]# pwd
/mydata/elasticsearch/data
[root@10 data]# docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
> -e  "discovery.type=single-node" \
> -e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
> -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
> -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
> -v  /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
> -d elasticsearch:7.4.2

创建 nginx

在/mydata下创建nginx文件夹

  随便启动一个nginx实例,只是为了复制出配置

[root@10 mydata]# docker run -p 80:80 --name nginx -d nginx:1.10

执行后会自动下载,下载后会自动启动nginx容器

装上面的容器内的配置文件copy到当前目录,

docker container cp nginx:/etc/nginx .

cp:copy

nginx:/etc/nginx .:哪个容器(名字)下的哪个文件夹

谷粒商城学习——P124 es 自定义扩展词库第5张

 然后停掉并删除nginx,改下nginx目录结构

[root@10 nginx]# docker stop nginx
nginx
[root@10 nginx]# docker rm nginx
nginx
[root@10 nginx]# cd ../
[root@10 mydata]# mv nginx conf
[root@10 mydata]# mkdir nginx
[root@10 mydata]# mv conf/ nginx
[root@10 mydata]# ls
elasticsearch  mysql  nginx  redis

创建新的nginx,执行以下命令:

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/logs/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10
-p 80:80映射nginx80端口,
\换行
将nginx所有html静态资源/usr/share/nginx/html映射到/mydata/nginx/html
将nginx所有日志想关信息/var/logs/nginx映射到/mydata/nginx/logs
将nginx的配置/etc/nginx关联到/mydata/nginx/conf
到这nginx就安装成功了

将要分词的内容放到html/es/fenci.txt中
[root@10 nginx]# cd html
[root@10 html]# mkdir es
[root@10 html]# cd es
[root@10 es]# ls
[root@10 es]# vi fenci.txt

填入

张亚南

尚硅谷

修改ik分词器的远程词库地址/usr/share/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml(已映射为/mydata/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml)

[root@10 config]# pwd
/mydata/elasticsearch/plugins/ik/config
[root@10 config]# vi IKAnalyzer.cfg.xml

打开远程扩展字典并配置

谷粒商城学习——P124 es 自定义扩展词库第6张

然后重启es

[root@10 config]# docker restart elasticsearch

测试ik_smart

POST _analyze
{
  "tokenizer": "ik_smart",
  "text": "张亚南喜欢尚硅谷"
}

结果:

{
  "tokens" : [
    {
      "token" : "张亚南",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "喜欢",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "尚硅谷",
      "start_offset" : 5,
      "end_offset" : 8,
      "type" : "CN_WORD",
      "position" : 2
    }
  ]
}

测试ik_max_word:

POST _analyze
{
  "tokenizer": "ik_max_word",
  "text": "张亚南喜欢尚硅谷"
}

结果:

{
  "tokens" : [
    {
      "token" : "张亚南",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "喜欢",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "尚硅谷",
      "start_offset" : 5,
      "end_offset" : 8,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "硅谷",
      "start_offset" : 6,
      "end_offset" : 8,
      "type" : "CN_WORD",
      "position" : 3
    }
  ]
}

到些,扩展词库配置完成

设置es开机自启:

[root@10 config]# docker update elasticsearch --restart=always

免责声明:文章转载自《谷粒商城学习——P124 es 自定义扩展词库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇poi读取word2003(.doc文档)中的表格Android应用提升性能和用户体验下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Elasticsearch _reindex Alias使用

应用背景:1、当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex。 2、当数据的mapping需要修改,但是大量的数据已经导入到索引中了,重新导入数据到新的索引太耗时;但是在ES中,一个字段的mapping在定义并且导入数据之后是不能再修改的, 所以这种情况下也可以考虑尝试使用...

elasticsearch 高级搜索示例 es7.0

1 基础数据 1.1 创建索引 PUT mytest { "mappings": { "properties": { "title": { "type": "text", "fields": { "keyword": { "type": "text",...

使用Docker官方的Django包【转】

官方Django docker,并没有安装Django 所以需要 在requirements.txt中配置Django 具体安装流程可以参考:http://www.logme.cn/blog/51/use_Docker_official_django/ 作两记录: - python安装modules,切换到Python27Scripts 执行 easy_i...

nginx配置phpcms v9伪静态规则 phpcms伪静态 404 Not Found

location / { if (!-f $request_filename){ rewrite (.*) /index.php; } rewrite ^/caipu-([0-9]+)-([0-9]+)-([0-9]+).html /index.php?m=content&c=index&a=show&catid=$1&am...

记CentOs服务器内存使用满的解决办法

使用的一个应用服务器,weblogic部署,nginx分配,在使用了半个月的时间里,服务器内存达到杀掉服务器进程之后查看被删除但是仍然被应用程序占用的文件列表由于我删掉了日志里所以东西,所以导致后来我又得使用了一个命令由于我删了日志里的ngnix.pid 但是我删除的只是结尾log日志呀,不知道怎么就把pid结尾文件删除了,奇怪反正就报这个错“/usr/l...

十二、ES分词器

一、ES分词介绍 我们使用搜索引搜索我们想要查询的内容时,ES数据库会对我们输入的内容进行分词,再按分词的评分进行排序,优先显示评分高的内容。 如在某宝搜索双飞燕蓝牙无线鼠标,某宝的搜索引擎就可能会将该内容分为双飞燕,蓝牙,无线,鼠标,并将评分高的结果优先显示。 如上图,双飞燕就跟无线蓝牙鼠标分开了,这就是分词 因为默认的ES分词器对中文支持不是很好,这里...