ElasticSearch--分词

【笔记于学习尚硅谷课程所作】

4、分词

​ 一个tokenizer (分词器)接收一个字符流,将之分割为独立的tokens (词元,通常是独立的单词),然后输出tokens流。Elasticsearch提供了很多内置分词器

//测试内置的standard分词器
POST _analyze
{
  "analyzer": "standard",
  "text": "l love you"
}

//结果如下
{
  "tokens" : [
    {
      "token" : "l",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "love",
      "start_offset" : 2,
      "end_offset" : 6,
      "type" : "<ALPHANUM>",
      "position" : 1
    },
    {
      "token" : "you",
      "start_offset" : 7,
      "end_offset" : 10,
      "type" : "<ALPHANUM>",
      "position" : 2
    }
  ]
}

​ 但是,内置的分词器只能分英文,遇到汉语会逐字分词,这不符合需求,所以我们选择开源的ik分词器

4.1安装ik分词器

1.在GitHub下载与Elasticsearch版本相同的压缩包

2.放到Elasticsearch的plugins目录下,并解压

3.重启容器

4.测试

POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "我是一个学生"
}

4.2 安装nginx

#创建文件夹,放置配置文件
mkdir /mydata/nginx

#启动容器,如果没有则下载对应版本的镜像
docker run -p 80:80 --name nginx -d nginx:1.10

#到mydata的路径下
cd /mydata

#复制nginx的配置文件到刚才创建的文件夹
docker container cp nginx:/etc/nginx .

#关闭并删除容器
docker stop nginx
docker rm nginx

#将原来的nginx文件夹,改名为conf
mv nginx conf

#创建一个nginx
mkdir nginx

#将conf放入nginx
mv conf nginx/

#创建新的容器
docker run -p 80:80 --name nginx -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/logs:/var/log/nginx -v /mydata/nginx/conf:/etc/nginx -d nginx:1.10

#自启动
docker update nginx --restart=always

4.3 自定义分词器

#在/mydata/nginx/html目录下创建es文件夹
mkdir es
cd es

#在文件家里创建文本,将自定义的分词写入
vim fenci.txt

#进入
 cd /mydata/elasticsearch/plugins/ik/config/
 
#修改 IKAnalyzer.cfg.xml配置文件
vim IKAnalyzer.cfg.xml
#将这个配置注释取消,并配置
<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">http://192.168.196.128/es/fenci.txt</entry>

#重启elasticsearch

猜你喜欢

转载自blog.csdn.net/qq_41596568/article/details/106413932