Elasticsearch安装IK分词器、配置自定义分词词库

article/2025/9/13 16:16:42

    • 一、分词简介
      • 1、单字分词:
      • 2、二分法分词:
      • 3、词库分词:
    • 二、配置IK中文分词器
    • 三、配置自定义分词拓展词库

一、分词简介

在Elasticsearch中,假设搜索条件是“华为手机平板电脑”,要求是只要满足了其中任意一个词语组合的数据都要查询出来。借助 Elasticseach 的文本分析功能可以轻松将搜索条件进行分词处理,再结合倒排索引实现快速检索。Elasticseach 提供了三种分词方法:单字分词,二分法分词,词库分词。
在这里插入图片描述

1、单字分词:

如:“华为手机平板电脑”
效果:“华”、“为”、“手”、“机”、“平”、“板”、“电”、“脑”

2、二分法分词:

按两个字进行切分。
如:“华为手机平板电脑”
效果:“华为”、“为手”、“手机”、“机平”、“平板”、“板电”、“电脑”。

3、词库分词:

按某种算法构造词,然后去匹配已建好的词库集合,如果匹配到就切分出来成为词语。通常词库分词被认为是最理想的中文分词算法。而词库分词最常用的就是 IK 分词。

IK 分词器提供两种分词模式:

ik_max_word:会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query。

ik_smart:会将文本做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase Query。

二、配置IK中文分词器

安装好ES和Kibana后,进入Kibana操作页面,使用ES默认的分词器来试一下,中文的分词效果
在这里插入图片描述

可以看到ES自带的分词器,它是简单的把每个汉字进行了分词,这肯定不是我们想要的效果
所以,我们需要自己来配置一下对中文分词支持比较好的IK分词器
IK分词器插件下载:(IK分词器要和ES版本一致)
7.8.0版:

https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.0/elasticsearch-analysis-ik-7.8.0.zip

其他版本就直接修改url上的版本号

//进入plugins目录
cd /mydata/elasticsearch/plugins    
//新建一个名字叫 ik 的文件夹
mkdir ik             
//将下载的ik分词器插件压缩包上传到ik文件夹下,然后解压zip到当前目录
unzip elasticsearch-analysis-ik-7.8.0.zip
//最后给一下ik文件夹的权限 
chmod -R 777 /mydata/elasticsearch/plugins/ik
//安装好后,检查下是否安装成功了
使用docker exec -it elasticsearch /bin/bash  命令 进入容器内部
进入容器的 cd /usr/share/elasticsearch/bin 目录
执行 elasticsearch-plugin list 命令(列出es安装的所有插件)
//如果列出了 ik 就说明es的ik中文分词器安装成功了 
//装好ik分词器后,记得重启ES容器
docker restart elasticsearch

配置好IK分词器后,再来用IK分词器看下效果
在这里插入图片描述

可以看到IK分词器对我们的中文进行了比较理想的分词

三、配置自定义分词拓展词库

IK分词器对中文有比较好的分词效果,但是它并不能对当前比较热门的网络流行词或者一些新的词进行分词处理
在这里插入图片描述

上图可以看到,IK分词器并不支持某一些词汇的分词处理
所以,我们需要配置一下自定义的分词拓展词库,来支持热门的网络流行词或新词。
1、配置自定义词库需要nginx的支持,首先需要安装好nginx

2、安装后nginx后,下边开始配置自定义的分词拓展词库

[root@192 ~]# cd /mydata/nginx/html/
[root@192 html]#
[root@192 html]# mkdir es
[root@192 html]# cd es
[root@192 html]# vi fenci.txt

在/mydata/nginx/html/ 目录下新建一个es文件夹,然后新建一个fenci.txt的文件,在里边写需要支持分词的词汇,然后保存
在这里插入图片描述

3、配置IK的拓展词库

cd /mydata/elasticsearch/plugins/ik/config
vim IKAnalyzer.cfg.xml
#把里边注释掉的这一句打开并配置成你分词文本所在的nginx访问地址
http://192.168.xx.xx/es/fenci.txt

4、重启ES容器

docker restart elasticsearch

重启后,再来看下效果
在这里插入图片描述

可以看到已经可以按照自定义的分词拓展词库来进行分词了


http://chatgpt.dhexx.cn/article/M5trw8fJ.shtml

相关文章

Elasticsearch 英文分词 中文分词

对于倒排索引来说,很重要的一件事情就是需要对文本进行分词,经过分词可以获取情感、词性、质性、词频等等的数据。 Elasticsearch 分词工作原理 在 Elasticsearch 中进行行分词的需要经过分析器的3个模块,字符过滤器将文本进行替换或者删除&…

【ElasticSearch】分词器(ElasticSearchIK分词器)

1. 分词器介绍 •IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包•是一个基于Maven构建的项目•具有60万字/秒的高速处理能力•支持用户词典扩展定义 2. ik 分词器安装 IK 分词器安装 3. 分词器的使用 IK分词器有两种分词模式:ik…

ElasticSearch中文分词,看这一篇就够了

写在前面:我是「且听风吟」,目前是某上市游戏公司的大数据开发工程师,热爱大数据开源技术,喜欢分享自己的所学所悟,现阶段正在从头梳理大数据体系的知识,以后将会把时间重点放在Spark和Flink上面。 如果你…

Ik分词器(自定义分词-mysql)

引言:ik分词器的分词范围不够广泛。某些特定行业的专业用语分词能力就不够了,此时就需要自定义分词,与停顿词。 1、下载ik分词器源码 git地址:https://github.com/medcl/elasticsearch-analysis-ik/releases?page2 下载对应的…

分词器详解

在全文搜索(Fulltext Search)中,**词(Term)**是一个搜索单元,表示文本中的一个词,**标记(Token)**表示在文本字段中出现的词,由词的文本、在原始文本中的开始…

ES-分词器

简介 分词器是es中的一个组件,通俗意义上理解,就是将一段文本按照一定的逻辑,分析成多个词语,同时对这些词语进行常规化的一种工具;ES会将text格式的字段按照分词器进行分词,并编排成倒排索引,…

IK分词器

IK分词器是ES的一个插件,主要用于把一段中文或者英文的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词器是将每个字看成一个词,比如"我爱技术"会被分为"我…

Elasticsearch连续剧之分词器

目录 一、前言二、默认分词器三、IK分词器1.主要算法2.安装IK分词器2.1 关闭es服务2.2 上传ik分词器到虚拟机2.3 解压2.4 启动ES服务2.5 测试分词器效果2.6 IK分词器词典 四、拼音分词器1.安装2.测试分词效果 五、自定义分词器1.创建自定义分词器2.测试 一、前言 ES文档的数据…

jieba分词

一、jieba简介 jieba库是一款优秀的 Python 第三方中文分词库,jieba 支持三种分词模式:精确模式、全模式和搜索引擎模式,下面是三种模式的特点。 精确模式: 试图将语句最精确的切分,不存在冗余数据,适合做…

NLP-分词综述

NLP-分词综述 一、什么是分词?二、为什么要分词1、将复杂问题转化为数学问题2. 词是⼀个⽐较合适的粒度3. 深度学习时代,部分任务中也可以「分字」 三、中英⽂分词的3个典型区别1.分词⽅式不同,中⽂更难2.英⽂单词有多种形态3.中⽂分词需要考…

Jieba中文分词 (一) ——分词与自定义字典

jieba分词特点 支持四种分词模式: 精确模式试图将句子最精确地切开,适合文本分析;全模式把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;搜索引擎模式在精确模式的基础上,对长词再次…

【NLP学习】中文分词

word segmentation 1.概述2.分词方法(1)基于词典的机械分词法①正向最大匹配(FMM)②逆向最大匹配(BMM)③双向最大匹配 (2)基于统计的分词法①基于互信息的分词方法②最大概率分词方法 3.分词粒度4.中文分词工具5.总结 1.概述 *◆…

基于字典的中文分词

中文分词介绍 中文分词就是将一个汉语句子中的词切分出来。为机器翻译、文本挖掘、情感分析等任务打好基础。为什么一定要先进行分词呢?这就像 26 个字母一样,单个字母并不能表达某个意思,将其组合起来成为一个英文单词才有意义。 中文虽然有…

【ElasticSearch】中文分词器

ES默认的analyzer(分词器),对英文单词比较友好,对中文分词效果不好。不过ES支持安装分词插件,增加新的分词器。 1、如何指定analyzer? 默认的分词器不满足需要,可以在定义索引映射的时候&#…

Elasticsearch之中文分词器

📢📢📢📣📣📣 哈喽!大家好,我是【一心同学】,一位上进心十足的【Java领域博主】!😜😜😜 ✨【一心同学】的写作风格&#x…

各种中文分词工具的使用方法

诸神缄默不语-个人CSDN博文目录 本文将介绍jieba、HanLP、LAC、THULAC、NLPIR、spacy、stanfordcorenlp、pkuseg等多种中文分词工具的简单使用方法。 对于可以在多种语言上使用的工具,本文仅介绍其在Python语言上的使用。 文章目录 1. jieba2. HanLP3. LAC4. THULA…

中文分词方法

词条化 分词又叫做词条化(tokenlize),指的是将原始的字符流转换成一个一个词条(token)的过程。词条化属于自然语言处理中预处理的一个步骤,它是分析语义的基础。下图是一个词条化的例子。 在不同的语言中&…

细说中文分词

完整的中文自然语言处理过程一般包括以下五种中文处理核心技术:分词、词性标注、命名实体识别、依存句法分析、语义分析。其中,分词是中文自然语言处理的基础,搜素引擎、文本挖掘、机器翻译、关键词提取、自动摘要生成等等技术都会用到中文分…

【Grails4+spring security】

Grails4spring security实现单用户登录 描述1、新建项目目录结构如图所示2、打开根目录下的build.gradle文件,dependencies中添加spring-security依赖3、创建用户、角色的domain4、创建登录控制器LoginController5、创建注销控制器 LogoutController6、自定义一个Co…

Grails配置-基本配置-如何覆盖默认配置,在哪里进行自定义配置

文章目录 Grails配置基本配置⎮Grails4风格配置⎮Grails2风格的Groovy配置⎮使用GrailsApplication对象访问配置信息 在控制器中使用grailsApplication对象 能获取到的配置信息有哪些 在业务层中使用grailsApplication对象方式一 在业务层中使用grailsApplication对象方式二…