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 测 ...
随机推荐
- APISpace 分钟级降水预报API接口 免费好用
各种不同类型的降水对国民经济和国防建设会产生不同的影响.无论农业生产.航空.航海.交通运输.水利建设.防涝防旱等都需要以及准确的降水预报. 分钟级降水预报API,支持国内任一经纬度的预报数据,实时 ...
- 输入一个url全过程详解
1. 用户在浏览器中输入url,浏览器接收到url. 2.浏览器接收到这个url之后,会根据这个url会先查看缓存,如果有缓存且没有过期的话直接提供给客户端,完成页面渲染. 3.否则浏览器就会通过DN ...
- 【FAQ】应用内支付服务无法拉起支付页面常见原因分析和解决方法
华为应用内支付服务(In-App Purchases)通过简便的接入流程为用户提供良好的应用内支付体验,然而在实际接入过程中,有一些开发者反馈测试时会无法正常拉起支付页面,下文将详细分析问题出现的5种 ...
- 如何给selenium.chrome写扩展拦截或转发请求
Selenium.WebDriver Selenium WebDriver 是一组开源 API,用于自动测试 Web 应用程序,利用它可以通过代码来控制chrome浏览器! 有时候我们需要mock接口 ...
- expect交互学习笔记
expect主要应用于自动化交互式操作的场景;比如服务器过多,密码也不尽相同的情况下,需要便捷的登陆服务器,而无需输入密码的情况,亦或者便捷登陆mysql/ftp等需要交互的场景:也可以在服务器之间通 ...
- 题解 P2657 【[SCOI2009] windy 数】
数位 dp. // 数位 dp 其实是爆搜加记忆化 #include<iostream> #include<cstring> #include<cmath> usi ...
- ASP.NET Core 产生连续 Guid
1 前言 1.1 这篇文章面向的读者 本文不会过多解释 Guid 是什么,以及顺序 Guid 的作用,需要读者自行具备: 知道 Guid,并且清楚其作用与优势 清楚 Guid.NetGuid() 产生 ...
- PHP断点续传(下载)代码
<?php /** * PHP-HTTP断点续传实现 * @param string $path: 文件所在路径 * @param string $file: 文件名 * @return voi ...
- LabView、CVI、MeasurementStudio三者之间的区别
LabView是NI公司傻瓜化的图形操作测试开发工具: CVI是NI公司C语言风格的测试开发语言,当然也是工具: Measurement Studio是面向一直使用微软开发工具如VC.C#的那些开发人 ...
- Sphere类定义
这个类是球体,也就是一会要显示的球体了.这个类继承于Geometrics类,并实现了自己的碰撞检测,碰撞原理,书上也说的很清楚了啊,大家多看.然后对照代码就明白了. 类定义: #pragma once ...