ElasticSearch IK分词器配置远程词典

  • 1.在线安装IK分词器
  • 2.IK分词器的弊端
  • 3.解决措施,配置远程词典实时更新
  • 补充

1.在线安装IK分词器

ElasticSearch中默认的分词器是standard,该分词器对中文按字分词,对英文按单词分词

GET /_analyze
{"text": "我是一个杠精,hello world!"
}

结果

{"tokens" : [{"token" : "我","start_offset" : 0,"end_offset" : 1,"type" : "<IDEOGRAPHIC>","position" : 0},{"token" : "是","start_offset" : 1,"end_offset" : 2,"type" : "<IDEOGRAPHIC>","position" : 1},{"token" : "一","start_offset" : 2,"end_offset" : 3,"type" : "<IDEOGRAPHIC>","position" : 2},{"token" : "个","start_offset" : 3,"end_offset" : 4,"type" : "<IDEOGRAPHIC>","position" : 3},{"token" : "杠","start_offset" : 4,"end_offset" : 5,"type" : "<IDEOGRAPHIC>","position" : 4},{"token" : "精","start_offset" : 5,"end_offset" : 6,"type" : "<IDEOGRAPHIC>","position" : 5},{"token" : "hello","start_offset" : 7,"end_offset" : 12,"type" : "<ALPHANUM>","position" : 6},{"token" : "world","start_offset" : 13,"end_offset" : 18,"type" : "<ALPHANUM>","position" : 7}]
}

但是默认的分词器对中文网站不友好,因为对中文时按照单字分词,所以如果我们想按词语来搜索就搜不到内容;所以,我们使用IK分词器

在线安装IK分词器

在线安装IK (v5.5.1版本后开始支持在线安装 )

1、删除ES原始数据
因为之前可能使用的标准分词器,如果存在数据,现在又使用IK分词器会出现冲突

进入es安装目录中将data目录数据删除

rm -rf data

2、安装IK
在es安装的bin目录中执行如下命令

./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.0/elasticsearch-analysis-ik-6.8.0.zip

3、查看IK
安装完成后会在plugins目录下,生成IK

[root@linux elasticsearch-6.8.0]$ ls plugins/
analysis-ik

4、重启es生效

IK分词器有两种模式
ik_max_word:最大限度分词


GET /_analyze
{"text": "中华人民共和国国歌,hello world!","analyzer": "ik_max_word"
}
---------------
{"tokens" : [{"token" : "中华人民共和国","start_offset" : 0,"end_offset" : 7,"type" : "CN_WORD","position" : 0},{"token" : "中华人民","start_offset" : 0,"end_offset" : 4,"type" : "CN_WORD","position" : 1},{"token" : "中华","start_offset" : 0,"end_offset" : 2,"type" : "CN_WORD","position" : 2},{"token" : "华人","start_offset" : 1,"end_offset" : 3,"type" : "CN_WORD","position" : 3},{"token" : "人民共和国","start_offset" : 2,"end_offset" : 7,"type" : "CN_WORD","position" : 4},{"token" : "人民","start_offset" : 2,"end_offset" : 4,"type" : "CN_WORD","position" : 5},{"token" : "共和国","start_offset" : 4,"end_offset" : 7,"type" : "CN_WORD","position" : 6},{"token" : "共和","start_offset" : 4,"end_offset" : 6,"type" : "CN_WORD","position" : 7},{"token" : "国","start_offset" : 6,"end_offset" : 7,"type" : "CN_CHAR","position" : 8},{"token" : "国歌","start_offset" : 7,"end_offset" : 9,"type" : "CN_WORD","position" : 9},{"token" : "hello","start_offset" : 10,"end_offset" : 15,"type" : "ENGLISH","position" : 10},{"token" : "world","start_offset" : 16,"end_offset" : 21,"type" : "ENGLISH","position" : 11}]
}

ik_smart:尽量以词语的形式分词

GET /_analyze
{"text": "中华人民共和国国歌,hello world!","analyzer": "ik_smart"
}--------
{"tokens" : [{"token" : "中华人民共和国","start_offset" : 0,"end_offset" : 7,"type" : "CN_WORD","position" : 0},{"token" : "国歌","start_offset" : 7,"end_offset" : 9,"type" : "CN_WORD","position" : 1},{"token" : "hello","start_offset" : 10,"end_offset" : 15,"type" : "ENGLISH","position" : 2},{"token" : "world","start_offset" : 16,"end_offset" : 21,"type" : "ENGLISH","position" : 3}]

2.IK分词器的弊端

IK分词器虽然优于ES提供的默认分词器,但是还是存在一个弊端
那就是,不能识别网络中的热词,即不会把网络中流行的热词进行分词,
比如杠精,蓝瘦香菇…,这些词语,我们搜索时是希望搜索到内容的,但是IK会对这些词进行单字分词;

所以,我们搜索"碰瓷",""“杠精"等字眼时就搜索不到”

3.解决措施,配置远程词典实时更新

这些都是IK的本地词典,本地词典写入的词一旦写入,后面再想去填入或者停用,比较麻烦,所有这里我们配置远程词典

编辑 elasticsearch/config/analysis-ik/cat IKAnalyzer.cfg.xml文件

在此配置远程字典和停用词典

<!-- <entry key="remote_ext_dict">words_location</entry> -->

新建一个springboot应用,新建ext.txt文件,启动项目

把项目ip配置到xml文件中

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

重启ES服务
发现已经重新加载词典

测试,发现已经成功!!

而且以后如果我们在项目中更改了词典,ES这边会自动更新

补充

以后,我们项目中的的ext.txt和stop.txt词典可以结合Redis来实现动态更新
Redis中可以统计某个词的搜索次数,每隔一段时间,统计TOPn的词,更新到txt中,然后ES监听到该url对应的资源发生了变化就会进行自动拉取

至此,IK分词器配置远程词典并实现自动更新完成~!

ElasticSearch IK分词器配置远程词典相关推荐

  1. requirednew基于xml配置日志不回滚_Elasticsearch配置IK分词器的远程词库

    在生活中很多很多地方都涉及到了全文检索,最常见的就好比日常使用到的百度搜索等搜索引擎,也都是基于全文检索来实现的:全文检索种类较多,就好比Elasticsearch.Sorl等. 为Ealsticse ...

  2. es ik 词库添加词语_Elasticsearch配置IK分词器的远程词库

    在生活中很多很多地方都涉及到了全文检索,最常见的就好比日常使用到的百度搜索等搜索引擎,也都是基于全文检索来实现的:全文检索种类较多,就好比Elasticsearch.Sorl等. 为Ealsticse ...

  3. ElasticSearch——IK分词器的下载及使用

    ElasticSearch--IK分词器的下载及使用 1.什么是IK分词器 ElasticSearch 几种常用分词器如下: 分词器 分词方式 StandardAnalyzer 单字分词 CJKAna ...

  4. Windows下Solr的安装与配置,附DIH全量导入MySQL数据、IK分词器配置详解——不用集成Tomcat

    Solr是Apache开源的比较稳定的一款全文搜索引擎,也是市面上相对比较流行的一款全文搜索引擎,好不好用你用过之后自有判断.今天给大家分享一下它的安装与配置,我用的是7.7.2版本.废话不多说,开搞 ...

  5. ElasticSearch IK 分词器快速上手

    简介: ElasticSearch IK 分词器快速上手 一.安装 IK 分词器 1.分配伪终端 我的 ElasticSearch 是使用 Docker 安装的,所以先给容器分配一个伪终端.之后就可以 ...

  6. elastic ik分词搜索_php环境下使用elasticSearch+ik分词器进行全文搜索

    php中文网最新课程 每日17点准时技术干货分享 首先需要说明的一点是,如果需要启用ik分词器,那么分词器的版本必须与es版本一致,即6.3.0的分词器需要同样6.3.0版本的es支持. 安装java ...

  7. ik分词器 mysql php_php环境下使用elasticSearch+ik分词器进行全文搜索

    首先需要说明的一点是,如果需要启用ik分词器,那么分词器的版本必须与es版本一致,即6.3.0的分词器需要同样6.3.0版本的es支持. 安装java win-64bit的安装包需要去java英文官网 ...

  8. elasticsearch IK分词器的安装、使用与扩展

    ES 的默认分词器(standard)不支持中文分词,满足不了平时的需求,所以需要用能够支持中文分词的 IK 分词器.而且 IK 分词器也是支持英文分词的. 本文介绍下IK分词器的安装.基本使用方法: ...

  9. ElasticSearch ik分词器从MySQL里面获取分词信息

    出自 中华石杉 老师的一个课程, 缘由 每次都是在es的扩展词典中,手动添加新词语,很坑 (1)每次添加完,都要重启es才能生效,非常麻烦 (2)ElasticSearch是分布式的,可能有数百个节点 ...

  10. 狂神聊 ElasticSearch(IK分词器+Rest+集成SpringBoot+实战爬虫项目+完整代码及资料)

    Bilibili 搜索关注:狂神说 Java(和狂神一起学习,共同进步) 公众号:狂神说(文章日更) 狂神聊 ElasticSearch 版本:ElasticSearch 7.6.1(全网最新了) 6 ...

最新文章

  1. 第十五届全国大学生智能车竞赛车模技术检查表格
  2. java super extends_Java继承extends与super关键字
  3. P3964-[TJOI2013]松鼠聚会【计算几何】
  4. 服务器机房新风系统,某机房新风系统设计方案参考
  5. Envoy service mesh、Prometheus和Grafana下的微服务监控(翻译)
  6. Linux命令速查手册出炉!
  7. .net 根据模板创建html文件
  8. 如何选择好的BI系统工具
  9. MyEclipse使用过程中的问题及对应设置的总结
  10. 不到100行代码制作各种证件照
  11. matlab线性规划系列之基础解题-2
  12. ubuntu服务器系统进入安全模式,ubuntu bios 无法进入安全模式
  13. 知道SG函数是干什么的
  14. 惠普服务器装centos 系统安装,hp 服务器安装linux系统安装
  15. java pacs上传服务_医疗pacs系统影像数据的同步方法及前置服务器的制造方法
  16. android 左右切换对话框 dialog
  17. P07748. 义务植树
  18. 【Java入门杂记】【六】
  19. 图麟信息科技联合创始人张勋:全面商用化到来,AI全方面融入行业
  20. python 提取出所有学生的序号,姓名,成绩(简单易懂,代码可以直接运行)

热门文章

  1. 分享一位大佬开发的驱动级的虚拟键盘鼠标,支持DD键鼠接口
  2. 三位物理学家与陶哲轩证明的惊天定理,原来早在教科书里?
  3. SQL建表及插入数据
  4. 线光谱共焦传感器—专注于3D视觉检测
  5. C# 对文件进行MD5计算
  6. 最全常见算法工程师面试题目整理
  7. Hadoop原理与安装
  8. python 视频剪辑_视频剪辑什么鬼?Python 带你高效创作短视频
  9. Samsung ML-1640/1641/1645/2240/2241/2245/scx4200/4300/4623/4824/4828免费清零软件2.1.2完全版
  10. Thinkphp6 获取当前协议+域名