Loading

ElasticSearch — 分词

1、简介

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

 

2、如何查看一句话的分词结果:

POST _analyze
{
    "analyzer":"standard"  //指定分词器:现在使用的是标准分词器
    "text":"我爱北京天安门"
}

不得不说啊:标准分词器真是low爆了:

clipboard

 

3、安装ik分词器 (可以对中文进行分词)

ik分词器的github地址:

clipboard

我的es是 7.4.2版本

clipboard

 

1)由于elasticsearch容器启动时,指定了文件挂载:-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins

所以,只需要将ik分词器下载到 /mydata/elasticsearch/plugins,并进行解压

clipboard

 

2)进入elasticsearch容器内部

docker exec -it fe25cc93c122 /bin/bash

clipboard

3)使用ik分词器,查看分词结果

clipboard

 

4、自定义扩展词库

1)随便启动一个nginx容器,只是为了复制出配置

    如果本地没有该镜像,则自动远程下载镜像
docker run -p 80:80 --name nginx -d nginx:1.10

 

2)将nginx容器内的所有文件拷贝到当前目录: /mydata/nginx

docker container cp nginx:/etc/nginx . 
【注意后面有个点】

 

3)在/mydata/nginx下创建conf文件夹,将原来nginx中的内筒拷贝到conf

 

4)停止原来的nginx容器

docker stop 79ca00c49e19
 
删除容器
docker rm 79ca00c49e19

5)以挂载的方式创建新的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

 

6) 在nginx下的html中创建 es文件夹,并创建 fenci.txt

fenci.txt 里面记录的是词库

 

7) 在 ik文件夹下 /coonfig/IKAnalyzer.cfg.xml 可以配置远程词典的地址

(此时远程词典应该在nginx的静态资源文件夹下)

<?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://121.40.182.123/es/fenci.txt</entry>
    <!--用户可以在这里配置远程扩展停止词字典-->
    <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

 

8)重启es服务

重新分词,可以看到乔碧罗被识别成一个单词了

 












posted @ 2020-12-20 22:16  青岑  阅读(157)  评论(0编辑  收藏  举报