IK支持自定义扩展词典和停用词典,所谓扩展词典就是有些词并不是关键词,但是也希望被ES用来作为检索的关键词,可以将这些词加入扩展词典。停用词典就是有些词是关键词,但是出于业务场景不想使用这些关键词被检索到,可以将这些词放入停用词典。如何定义扩展词典和停用词典可以修改IK分词器中config目录中IKAnalyzer.cfg.xml这个文件。

NOTE:词典的编码必须为UTF-8,否则无法生效

一、步骤

  1. 修改vim IKAnalyzer.cfg.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">ext_dict.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords">ext_stopword.dic</entry>
</properties>
  1. 在ik分词器目录下config目录中创建ext_dict.dic文件 编码一定要为UTF-8才能生效
vim ext_dict.dic 加入扩展词即可
  1. 在ik分词器目录下config目录中创建ext_stopword.dic文件
vim ext_stopword.dic 加入停用词即可
  1. 重启es生效

二、效果

POST _analyze
{"analyzer": "ik_smart","text": "巧碧螺"
}


如果有多个词典,使用英文分号隔开:

<entry key="ext_dict">my.dic;custom/single_word_low_freq.dic</entry>


然而,该方式有一种致命的缺陷,就是无法实时更新热词,修改完文件,必须重启elasticsearch才能生效,要想实时生效,需使用远程配置方式

三、远程配置热词库

  1. 启动nginx服务
    这里我们使用nginx服务(有web服务功能就可以提供远程热词库的功能了),来配置远程热词库。
    关于nginx的部署可以参考我的这篇文章

nginx默认访问html文件夹下的文件,在html下创建文件夹es_ik,创建fenci.txt


访问http://ip:port/es_ik/fenci.txt
正常显示则搭建成功

  1. 配置elasticsearch配置文件
<?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">ext_dict.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><entry key="remote_ext_dict">http://172.18.0.4:80/es_ik/fenci.txt</entry> <!--用户可以在这里配置远程扩展停止词字典--><entry key="remote_ext_stopwords">words_location</entry>
</properties>

注意这里的ip,因为我的nginx使用docker启动的,所以不可以简单设置localhost

可以看到:docker给nginx分配的ip是172.18.0.4

配置前分词情况

配置后

再试一个"胡噶撒旦撒"

只需修改fence.txt就可以了,无需重启动elasticsearch

推荐使用远程刷新模式

ElasticSearch配置扩展分词相关推荐

  1. Elasticsearch配置jieba分词分析器

    jieba分词是中文里面比较好的分词器,而当前Elasticsearch官方并不支持jieba分词,但可以通过配置plugins的方式使用jieba分词器作为es的analyzer. 配置环境:- m ...

  2. Elasticsearch配置拼音分词和自定义分词器

    下载elasticsearch-analysis-pinyin拼音分词器  https://codeload.github.com/medcl/elasticsearch-analysis-pinyi ...

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

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

  4. 2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索

    文章目录 1.为什么要自定义扩展ES词库呢? 2.如何自定义扩展词库呢? 3.Docker安装Nginx 4.在nginx中保存一个简易词库 5.修改IK分词器的配置文件,让其指向nginx保存的词库 ...

  5. ElasticSearch的中文分词

    一ElasticSearch安装中文分词器 1.1 gitclone https://github.com/medcl/elasticsearch-analysis-ik 1.2 gitcheckou ...

  6. 【Elasticsearch】Elasticsearch analyzer 中文 分词器

    1.概述 转载: https://blog.csdn.net/tzs_1041218129/article/details/77887767 分词器首先看文章:[Elasticsearch]Elast ...

  7. 04.ElasticSearch之IK分词器的安装与使用

    ElasticSearch之IK分词器的安装与使用 前言 安装 离线安装 在线安装 ik分词器测试 扩展(停用)词(典) 测试数据 概念 配置词典 1.修改配置文件 2.新建词典 3.自定义内容 4. ...

  8. docker、docker-compose 下安装elasticsearch、IK分词器

    docker.docker-compose 下安装elasticsearch.IK分词器 文章目录 docker.docker-compose 下安装elasticsearch.IK分词器 1.整体版 ...

  9. ElasticSearch最全分词器比较及使用方法

    介绍:ElasticSearch 是一个基于 Lucene 的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口.Elasticsearch 是用 Java 开 ...

最新文章

  1. python的TCP编程
  2. 一文带你领略并发编程的内功心法
  3. webstorm小技巧
  4. [虚拟机] VMware 15 + CentOS 7.7/8.0在主机和客户机之间拷贝文件失败的解决办法
  5. adc0832对光电二极管进行数据采集_一种基于光电二极管的麦克风跟踪检测电路的制作方法...
  6. php 判断update返回为0_PHP进行数据库更新update操作,返回状态
  7. 组织c语言程序的是什么,C程序在内存中的组织方式
  8. 很多朋友问做自媒体的意义是什么?
  9. QT 异步函数和同步函数交换问题
  10. rust睡觉按键没反应_扫描仪四个按键分别是
  11. ant centos环境下 编译没有将配置文件加载_Linux 下的动态库、静态库与环境变量...
  12. Struct与Class
  13. nginx工作原理详解
  14. Mac安装tree命令
  15. 数学知识整理:布朗运动与伊藤引理 (Ito‘s lemma)
  16. 计算机在汉语言文学专业中的应用,浅谈信息技术在中专学校汉语言文学专业中的应用...
  17. Md5码的生成及变种Md5码的生成
  18. 打开小地图并标记目标地点
  19. HLS直播(M3U8)回看和下载功能的实现
  20. 如何理解paddle.reader.xmap_readers()函数

热门文章

  1. CSE 5/7350 – Project
  2. git 出现 fatal: refusing to merge unrelated histories 错误
  3. OperationalError: (1044, Access denied for user ''@'localhost' to database 'mydb')
  4. 爬取古剑奇谭三官网的图片
  5. 【Java学习笔记】字符串和Date的转换
  6. 【.NET】Repeater控件简单的数据绑定(有bool,日期,序号)
  7. 【学习笔记】【C语言】返回指针的函数
  8. C# 发邮件类可发送附件
  9. java进阶08 GUI图形界面
  10. 用命令行CMD .bat 相关操作 如: 创建快捷方式 复制文件等