1、中文分词
中文分词的难点在于,在汉语中没有明显的词汇分界点,如在英语中,空格可以作为分隔符,如果分隔不正确就会造成歧义。
常用中文分词器,IK、jieba、THULAC等,推荐使用IK分词器。
IK分词器 Elasticsearch插件地址:https://github.com/medcl/elasticsearch-analysis-ik
#安装方法:将下载到的elasticsearch-analysis-ik-6.5.4.zip解压到/elasticsearch/plugins/ik
目录下即可。
#如果使用docker运行
docker cp elasticsearch-analysis-ik-6.5.4.zip elasticsearch:/usr/share/elasticsearch/plugins/
#进入容器
docker exec -it elasticsearch /bin/bash
mkdir /usr/share/elasticsearch/plugins/ik
cd /usr/share/elasticsearch/plugins/ik
unzip elasticsearch-analysis-ik-6.5.4.zip
#重启容器即可
docker restart elasticsearch
测试
POST http://192.168.142.128:9200/_analyze
{
"analyzer": "ik_max_word",
"text": "我是中国人"
}
自定义词汇
进入容器
docker exec -it elasticsearch /bin/bash
进入容器的config目录下
创建一个自定义文件my.dic, 并写入一些内容
打开IKAnalyzer.cfg.xml
IKAnalyzer.cfg.xml
写入内容
<entry key="ext_dict">my.dic</entry>
退出并重启容器
测试
POST http://192.168.142.128:9200/_analyze
{
"analyzer": "ik_max_word",
"text": "我和我的两个朋友张三与李四都喜欢玩英雄联盟跟吃鸡"
}
热更新IK分词的方法
gitHub上的截图
-----------------------------------------------------------------------------
加入 一条数据
POST http://192.168.142.128:9200/haoke/house
{
"image": "SH2137695162426728448.jpg",
"orientation": "53㎡",
"houseType": "2室1厅1卫",
"rentMethod": "租赁方式未知",
"time": "需提前预约",
"title": "婚房装修,品牌家具,塘桥四号线地铁口精装两房,",
"rent": "6200",
"floor": "高楼层/6层",
"url": "https://sh.lianjia.com/zufang/SH2137695162426728448.html"
}
测试查询数据
POST http://192.168.142.128:9201/haoke/house/_search
{
"query": {
"match": {
"title": {
"query": "地铁"
}
}
},
"highlight": {
"fields": {
"title": {
}
}
}
}
结果如下