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分词器介绍
Elasticsearch之Analyzer分词器介绍 Analysis Analyzer的组成 ES中内置的分词器 Analyzer的使用 几种分词器介绍 Standard Analyzer Sim ...
- 【ES实战】ES分词器介绍
文章目录 ES分词器介绍 什么是分词器 分词器的组成 Character filters Tokenizers Token filters 分词的过程 写入时分词 搜索时分词 测试分词效果 分词器的分 ...
- Elasticsearch 默认分词器和中分分词器之间的比较及使用方法
首发地址:http://www.54tianzhisheng.cn/2017/09/07/Elasticsearch-analyzers/ 介绍:ElasticSearch 是一个基于 Lucene ...
- Elasticsearch 系列文章(一):Elasticsearch 默认分词器和中分分词器之间的比较及使用方法
介绍:ElasticSearch 是一个基于 Lucene 的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口.Elasticsearch 是用 Java 开 ...
- Elasticsearch之分词器的工作流程
前提 什么是倒排索引? Elasticsearch之分词器的作用 Elasticsearch的分词器的一般工作流程: 1.切分关键词 2.去除停用词 3.对于英文单词,把所有字母转为小写(搜索时不区分 ...
- ElasticSearch IK 分词器快速上手
简介: ElasticSearch IK 分词器快速上手 一.安装 IK 分词器 1.分配伪终端 我的 ElasticSearch 是使用 Docker 安装的,所以先给容器分配一个伪终端.之后就可以 ...
- 【Es】ElasticSearch 自定义分词器
1.分词器 转载:https://blog.csdn.net/gwd1154978352/article/details/83343933 分词器首先看文章:[Elasticsearch]Elasti ...
- 【Elasticsearch】Elasticsearch analyzer 分词器
文章目录 1.概述 1.1 什么是analysis? 2.发生时期 3.开箱即用analyzer 3.1 默认的分词器 3.Analyze API 4.分词器介绍 4.1.标准分词器 Standard ...
- Elasticsearch之分词器查询分词效果
0.引言 Elasticsearch之分词器中文的我们一般使用IK,如果没有指定分词器.默认使用的是standard分词. IK分词能将中文分成词组: standard分词则会将每个中文分成一个单个的 ...
最新文章
- java并发编程同步器 Semaphore、CyclicBarrier、Exchanger、CountDownLatch
- 新开窗口不被拦截的方法-window.open和表单提交form
- Linux环境下安装RocketMQ(MetaQ)
- 下载chrome驱动 for selenium库
- 一个方便使用的在线截图Web控件-WebImageMaker
- IDEA配置码云Gitee的使用详解
- winform 调用外部程序和多线程
- pkcs1与pkcs8格式RSA私钥互相转换
- java 接口编程iservices_java – 通用接口
- 【转(比较全面)】CSS3弹性盒模型之Flexbox是布局模块box-sizing box-orient box-direction box-ordinal-group
- linux 反汇编 静态库,如何反汇编.lib静态库?
- 莫烦pytorch学习笔记(三)
- 局域网共享工具_Win10局域网共享开启工具
- 国内OA 安全现状初探
- BAT薪资大揭底:AI程序员80万太少!程序员薪资的天花板在哪?
- PUCCH format2中的RM码(reed muller code)和Polar码
- 北大计算机图灵班,北大首期“图灵班”开班
- stream().filter匹配过滤总结
- 深度至尊GHOST_XPSP3快速装机专业版V8.0
- ubuntu18.04系统如何新建文档,并且把新建文档作为模板全局使用
热门文章
- 北京中医药大学《计算机基础》平时作业4,北京中医药大学《有机化学B》平时作业1...
- Cannot resolve symbol 'alibaba'
- 经纬度1秒约等于多少米?
- 诚念六字真言的一点体悟
- Qt 物联网系统界面开发 “ 2022湖南省大学生物联网应用创新设计竞赛技能赛 ——应用物联网的共享电动自行车 ”
- 卡内基梅隆大学计算机专业类别,CMU的Computer Science「卡内基梅隆大学计算机科学系」...
- JavaScript设计模式理解
- 二进制补码转换为十进制数的方法(数学层面)
- IDEA下载与安装(IDEA2021.2.2版本)
- 新硬盘装系统出现的问题