栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

ES 分词学习总结

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ES 分词学习总结

今天搞一搞ES的分词,经过这两天的了解,ES就是个无关系型数据库,对于接触过有关系型数据库的我来说,就先这么理解吧,没问题。

如果没有分词这个硬性需求的要求,无关系型数据库可选的很多,所以啦,用ES就是用他的分词功能。

版本ES 8.2

语言 python

  Elasticsearch之所以全文搜索很快,是因为采用了倒排索引,倒排索引的核心是分词。分词:就是把内容拆分为很多个词语,ES是把text格式的字段按照分词器进行分词并保存为索引的。

Elasticsearch分析器有几个概念:Analysis、Analyzer、Character filters、Tokenizer、Token filter。

        Analysis(分析器)功能是把文本切分成词项(词项是倒排索引中的基本单位)。分析器的功能主要是通过分词器(Analyzer)来实现的。

Analyzer由三部分组成:字符过滤器(Character filters)、分词器(Tokenizer)和词元过滤器(Token filter)。每一个Analyzer有且只能有一个tokenizer。

Character filters:针对原始文本处理,例如去除html
Tokenizer:按照规则将文本切分为单词
Token Filter:将切分的单词进行加工,如单词小写、删除stopword、增加同义词等
 

内置分词器的介绍

post  _analyze  (细颗粒度)

 

post  _analyze

加上smart  结果没有分

 默认的分词不包括中文,因此需要内置中文分词

常用的中文分词包括 IK , ICU Analyzer ,  THULAC,推荐使用IK 分词,这也是目前使用最多的中文分词。

IK 下载地址 https://github.com/medcl/elasticsearch-analysis-ik/releases

要保证IK版本和 ES 版本一致

1,在 elasticsearch 的 plugins 目录中新建文件夹 "ik"
2,将解压出来的所有东西都放到"ik"目录
3,修改 "plugin-descriptor.properties" 中的 "elasticsearch.version" 为你使用的 elasticsearch 版本(版本不一致的话启动会失败)

4,重启 elasticsearch

至此IK 安装完毕

IK分词器有两种分词模式:"ik_max_word" 和 "ik_smart"

  1. ik_max_word:会做最细粒度的拆分,把能拆分的词都拆出来
  2. ik_smart:会做最粗粒度的拆分,贪心算法,尽可能把词分得长

 

post  _analyze

ik_max_word

自定义名词 

实际使用 IK 分词器时,有些专有名词也分不了,这种就需要自己定义词典了。

在 plugins/ik/config 目录中新增 "my.dic" 文件(名称自己定义),在 "my.dic" 中加入我们需要使用的专属词汇即可

然后修改 "IKAnalyzer.cfg.xml" 文件,在 "ext_dict" 模块,增加 "my.dic"。

同义词

顾名思义,就是含义类似的词汇归为一类,这个也需要自定义配置

首先在 "plugins/ik/config" 目录下新建 "analysis" 目录,然后在 "analysis" 目录下新建文件 "synonym.txt"。之后在 "synonym.txt" 文件中添加同义词。

注意:是英文逗号!且集群中每个节点都要添加此配置!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/896231.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号