es7.+(四)--分词,ik分词器的安装

1.概念

一个 tokenizer(分词器)接收一个字符流,将之割为独立的 tokens(词元,通常是独立的单词),然后输出 tokens流。

例如,whitespace tokenizer遇到空白字符时分割文。它会将文本 "Quick brown fox!“ 分割为 [Quick, brown, fox]。该 tokenizer(分词器)还负责记录各个term(词条)的顺序或 position 位置(用于 phrase短语和 word proximity 词近邻查询),以及term(词条)所代表的原始word(单词)的 start(起始)和end(结束)的 character offsets(字符偏移量)(用于高亮显示搜索的内容)。

ElasticSearch 提供了很多内置的分词器,可以用来构建 custom analyzers(自定义分词器)

2.安装IK分词器

(https://blog.csdn.net/WoAiShuiGeGe/article/details/106792560)
注意:不能用默认elasticsearch-plugin install xxx.zip进行安装
进入es容器内部 plugins目录
docker exec -it 容器id /bin/bash

在线安装ik
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip

进入plugins文件夹可以看到解压安装完成

3.分词器_analyze

es自带的分词器

POST _analyze
{
"analyzer":"standard",
"text":"你好世界"
}
结果:

会将吧每一个字分开,达不到分词的效果

需要用到ik分词器

使用ik分词器

自定义扩展词库

ik分词器不能识别流行网络用于,新生词汇,人名等

需要安装nginx

  • 随便启动一个nginx实例,只是为了复制出配置
    • 运行一个nginx容器
    • 创建一个存放文件夹
      我的为/home/docker/nginx
    • 在创建出的文件夹下复制出nginx的conf文件夹
      docker container cp nginx-test:/etc/nginx .
    • 删除该nginx容器
    • 修改复制出的文件夹为conf
      mv nginx conf
  • 再创建一个新的nginx容器,并挂载
docker run -p 80:80 --name nginx -v /home/docker/nginx/html:/usr/share/nginx/html -v /home/docker/nginx/logs:/var/log/nginx  -v /home/docker/nginx/conf:/etc/nginx -d  f6d0b4767a6c
  • 在html文件夹下创建一个es文件夹,专门用来存储自定义分词文件
  • 创建分词文件fenci.txt

访问:fenci.txt

修改ik分词器的配置

  • 修改/user/share/elasticsearch/plugins/ik/config/中的IKAnalyzer.cfg.xml
  • 进入IKAnalyzer.cfg.xml
 docker exec -it es7 /bin/bash

  • 打开注释,输入分词字典的地址

  • 然后重启es
    docker restart es7

  • 再次分词查询:

原文地址:https://www.cnblogs.com/psyduck/p/14472220.html