ES学习--详细配置与使用自定义分词器Analyzer
的有关信息介绍如下:在前一篇经验中,介绍了分词器Analyzer的各个组成部分以及通过组合ElasticSearch内置的各个组件实现了一个简单的分词器(详见如下经验引用)。
本篇经验继续分享如何通过详细定义各个部分来实现一个功能更加完备的分词器Analyzer。
1ES学习--Analyzer组成介绍和配置自定义Analyzer
首先看一下实现一个 character filter, tokenizer, token filter 三部分全部自定义的分词器Analyzer的相关语法结构。
实现自定义的 character filter , 语法结构为:
"char_filter": { "自定义char filter的名称":{ "配置项1":"配置项1值",
"配置项2":"配置项2值", "...":"..." } }
图1示:定义一个 mapping 类型的 character filter,处理表情字符
图2示:定义一个 pattern replace 类型的 character filter,处理手机号码
实现自定义的 Tokenizer, 语法结构为:
"tokenizer": { "自定义tokenizer的名称":{ "配置项1":"配置项1值",
"配置项2":"配置项2值",
"...":"..." } }
图示,定义了一个正则类型的 Tokenizer, 指定了若干个分词字符
实现自定义的 Token Filter, 语法结构为:
"filter": { "自定义token filter的名称":{ "配置项1":"配置项1值",
"配置项2":"配置项2值",
"...":"..." } }
图示,定义一个 stop 类型的 token filter, 停止词除了英文默认的停止词列表(_english_ ,还额外加了一个单词 "yes"
通过组合上述自定义的 character_filter、tokenizer、token filter 构建自定义的分词器 analyzer(图示), 语法结构为:
"analyzer": { "自定义分词器名称":{ "type":"custom", "char_filter":["自定义char filter的名称","..."], "tokenizer":"自定义tokenizer的名称", "filter":["自定义token filter的名称","..."] } }
测试自定义分词器
1. 将该分词器设置到一个索引上(图1示)
2. 通过该索引来引用这个分词器进行测试,包含表情符和新停止词(图2示)
3. 通过该索引来引用这个分词器进行测试,包含手机号和新停止词(图3示)