【笔记于学习尚硅谷课程所作】
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