Elasticsearch:ICU分词器介绍
ICU Analysis插件是一组将Lucene ICU模块集成到Elasticsearch中的库。 本质上,ICU的目的是增加对Unicode和全球化的支持,以提供对亚洲语言更好的文本分割分析。 从Elasticsearch的角度来看,此插件提供了文本分析中的新组件,如下表所示:

安装
我们可以首先到Elasticsearch的安装目录打入如下的命令:
$ pwd
/Users/liuxg/elastic/elasticsearch-7.3.0
(base) localhost:elasticsearch-7.3.0 liuxg$ ./bin/elasticsearch-plugin list
analysis-icu
analysis-ik
pinyin
上面显示我已经安装好了三个插件。上面的analysis-ik及pinyin都是为中文而准备的。
注意:如果你们在使用上面的elasticsearch-plug list命名出现如下的错误的话:

那么请使用如下的命令来删除在当前目录下的.DS_Store目录:
sudo find /Path/to/your/elasticsearch-folder -name ".DS_Store" -depth -exec rm {} \;
然后重新运行上面的命令就不会有问题了。
上面显示我已经安装好了。如果在你的电脑里没有安装好,可以使用如下的命令来进行安装:
./bin/elasticsearch-plugin install analysis-icu
上面的命令在Elasticsearch的安装目录里进行运行。等安装好后,我们需要重新启动Elasticsearch让它起作用。重新运行:
./bin/elasticsearch-plugin list
来检查analysis-icu是否已经被成功安装好了。
例子
等我们完全安装好了analysis_icu,那么,我们可以使用如下的例子在Kibana中来做一个实验:
POST _analyze
{
"text": "我爱北京天安门",
"analyzer": "icu_analyzer"
}
那么显示的结果是:

上面显示,我们analysis可以正确地帮我们把中文词语安装中文的分词方法正确地进行分词。
我们可以和standard分词器来进行一个比较:

我们从上面可以看出来,在默认的情况下,icu_analyzer通常是一个及以上的字符的token,而standard的analyzer只有一个字符。
通过更改字符过滤器和token的方法和模式参数,ICU分析器可以具有多种自定义变量类型。 下表描述了不同类型的ICU分析仪的组合:

让我们尝试nfkd_normalized分析器。 遵循定义并在Kibana Dev Tools控制台中对其进行测试。 响应显示在以下屏幕截图中。 但是,由于使用nfkd_normalized分析器和icu_analyzer分析器,我们无法在结果中找到任何差异:
POST _analyze
{
"text": "股市投资稳赚不赔必修课:如何做好仓位管理和情绪管理",
"char_filter": [{"type": "icu_normalizer", "name": "nfkc", "mode":"decompose"}],
"tokenizer": "icu_tokenizer"
}
运行结果:
{
"tokens" : [
{
"token" : "股市",
"start_offset" : 0,
"end_offset" : 2,
"type" : "<IDEOGRAPHIC>",
"position" : 0
},
{
"token" : "投资",
"start_offset" : 2,
"end_offset" : 4,
"type" : "<IDEOGRAPHIC>",
"position" : 1
},
{
"token" : "稳赚",
"start_offset" : 4,
"end_offset" : 6,
"type" : "<IDEOGRAPHIC>",
"position" : 2
},
{
"token" : "不",
"start_offset" : 6,
"end_offset" : 7,
"type" : "<IDEOGRAPHIC>",
"position" : 3
},
{
"token" : "赔",
"start_offset" : 7,
"end_offset" : 8,
"type" : "<IDEOGRAPHIC>",
"position" : 4
},
{
"token" : "必修",
"start_offset" : 8,
"end_offset" : 10,
"type" : "<IDEOGRAPHIC>",
"position" : 5
},
{
"token" : "课",
"start_offset" : 10,
"end_offset" : 11,
"type" : "<IDEOGRAPHIC>",
"position" : 6
},
{
"token" : "如何",
"start_offset" : 12,
"end_offset" : 14,
"type" : "<IDEOGRAPHIC>",
"position" : 7
},
{
"token" : "做好",
"start_offset" : 14,
"end_offset" : 16,
"type" : "<IDEOGRAPHIC>",
"position" : 8
},
{
"token" : "仓",
"start_offset" : 16,
"end_offset" : 17,
"type" : "<IDEOGRAPHIC>",
"position" : 9
},
{
"token" : "位",
"start_offset" : 17,
"end_offset" : 18,
"type" : "<IDEOGRAPHIC>",
"position" : 10
},
{
"token" : "管理",
"start_offset" : 18,
"end_offset" : 20,
"type" : "<IDEOGRAPHIC>",
"position" : 11
},
{
"token" : "和",
"start_offset" : 20,
"end_offset" : 21,
"type" : "<IDEOGRAPHIC>",
"position" : 12
},
{
"token" : "情绪",
"start_offset" : 21,
"end_offset" : 23,
"type" : "<IDEOGRAPHIC>",
"position" : 13
},
{
"token" : "管理",
"start_offset" : 23,
"end_offset" : 25,
"type" : "<IDEOGRAPHIC>",
"position" : 14
}
]
}
要使用新定义的分析器,我们必须在Index setting中对其进行定义。请参阅我之前的文章“Elasticsearch: analyzer”。
Elasticsearch:ICU分词器介绍的更多相关文章
- Elasticsearch之分词器的作用
前提 什么是倒排索引? Analyzer(分词器)的作用是把一段文本中的词按一定规则进行切分.对应的是Analyzer类,这是一个抽象类,切分词的具体规则是由子类实现的,所以对于不同的语言,要用不同的 ...
- Elasticsearch之分词器的工作流程
前提 什么是倒排索引? Elasticsearch之分词器的作用 Elasticsearch的分词器的一般工作流程: 1.切分关键词 2.去除停用词 3.对于英文单词,把所有字母转为小写(搜索时不区分 ...
- elasticsearch kibana + 分词器安装详细步骤
elasticsearch kibana + 分词器安装详细步骤 一.准备环境 系统:Centos7 JDK安装包:jdk-8u191-linux-x64.tar.gz ES安装包:elasticse ...
- Elasticsearch修改分词器以及自定义分词器
Elasticsearch修改分词器以及自定义分词器 参考博客:https://blog.csdn.net/shuimofengyang/article/details/88973597
- elasticsearch中文分词器ik-analyzer安装
前面我们介绍了Centos安装elasticsearch 6.4.2 教程,elasticsearch内置的分词器对中文不友好,只会一个字一个字的分,无法形成词语,别急,已经有大拿把中文分词器做好了, ...
- elasticsearch 分析器 分词器
参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenizers.html 在全文搜索(Fu ...
- Es学习第五课, 分词器介绍和中文分词器配置
上课我们介绍了倒排索引,在里面提到了分词的概念,分词器就是用来分词的. 分词器是ES中专门处理分词的组件,英文为Analyzer,定义为:从一串文本中切分出一个一个的词条,并对每个词条进行标准化.它由 ...
- SpringBoot整合Elasticsearch+ik分词器+kibana
话不多说直接开整 首先是版本对应,SpringBoot和ES之间的版本必须要按照官方给的对照表进行安装,最新版本对照表如下: (官网链接:https://docs.spring.io/spring-d ...
- ES 09 - 定制Elasticsearch的分词器 (自定义分词策略)
目录 1 索引的分析 1.1 分析器的组成 1.2 倒排索引的核心原理-normalization 2 ES的默认分词器 3 修改分词器 4 定制分词器 4.1 向索引中添加自定义的分词器 4.2 测 ...
随机推荐
- Kalman卡尔曼滤波,Least Square最小二乘估计,加权最小二乘,递归最小二乘
以下是Kalman的收敛性证明思路: cite:Stochastic Processes and Filtering Theory
- 梯度下降GD,随机梯度下降SGD,小批量梯度下降MBGD
阅读过程中的其他解释: Batch和miniBatch:(广义)离线和在线的不同
- Android刷第三方Recovery &获取root权限
一.基础环境 Make sure your computer has working adb and fastboot. Setup instructions can be found here. E ...
- ooday01类_对象_访问成员
笔记: 什么是类?什么是对象? 现实生活中是由很多很多对象组成的,基于对象抽出了类 对象:软件中真实存在的单个个体/东西 类:类别/类型,代表一类个体 类是对象的模子,对象是类的具体的实例 类中可以包 ...
- VGA显示原理
VGA显示是图像处理的基础,是一开始广泛使用的显示器,大部分机器采用VGA接口驱动,所以后来的显示器需要用VGA-xxx转接口来匹配. 用FPGA来驱动VGA,并不适用于显示动态(如手机显示,GUI) ...
- 详解 Apache Hudi Schema Evolution(模式演进)
Schema Evolution(模式演进)允许用户轻松更改 Hudi 表的当前模式,以适应随时间变化的数据. 从 0.11.0 版本开始,支持 Spark SQL(spark3.1.x 和 spar ...
- 彻底搞懂kubernetes调度框架与插件
调度框架 [1] 本文基于 kubernetes 1.24 进行分析 调度框架(Scheduling Framework)是Kubernetes 的调度器 kube-scheduler 设计的的可插拔 ...
- .NET静态代码织入——肉夹馍(Rougamo) 发布1.1.0
肉夹馍(https://github.com/inversionhourglass/Rougamo)通过静态代码织入方式实现AOP的组件,其主要特点是在编译时完成AOP代码织入,相比动态代理可以减少应 ...
- 数据结构与算法【Java】02---链表
前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生 ...
- mybatis 08: 返回主键值的insert操作 + 利用UUID获取字符串(了解)
返回主键值的insert操作 应用背景 图示说明 在上述业务背景下,涉及两张数据表的关联操作:用户表 + 用户积分表 传统操作:在对用户表执行完插入语句后,再次查询该用户的uid,将该uid作为外键, ...