在前一篇经验中,介绍了分词器Analyzer的各个组成部分以及通过组合ElasticSearch内置的各个组件实现了一个简单的分词器(详见如下经验引用)。本篇经验继续分享如何通过详细定义各个部分来实现一个功能更加完备的分词器Analyzer。
工具/原料
ElasticSearch,Kibana
方法/步骤
1、首先看一下实现一个characterfilter,tokenizer,tokenfilter三部分全部自定义的分词器Analyzer的相关语法结构。
2、实现自定义的characterfilter,语法结构为佼沣族昀:"char_filter":{"自定义charfi造婷用痃lter的名称":{"配置项1":"配置项1值","配置项2":"配置项2值","...":"..."}}图1示:定义一个mapping类型的characterfilter,处理表情字符图2示:定义一个patternreplace类型的characterfilter,处理手机号码
3、实现自定义的Tokenizer,语法结构为:"tokenizer":{"自定义tokenizer的名称":{"配置项1":"配置项1值","配置项2":"配置项2值","...":"..."}}图示,定义了一个正则类型的Tokenizer,指定了若干个分词字符
4、实现自定义的TokenFilter,语法结构为:"filter":{"自定义tokenfilter的名称":{"配置项1":"配置项1值","配置项2":"配置项2值","...":"..."}}图示,定义一个stop类型的tokenfilter,停止词除了英文默认的停止词列表(_english_,还额外加了一个单词"yes"
5、通过组合上述自定义的character_filter粑颇岔鲷、tokenizer、tokenfilter惺绅寨瞀构建自定义的分词器analyzer(图示),语法结构为:"analyzer":{"自定义分词器名称":{"type":"custom","char_filter":["自定义charfilter的名称","..."],"tokenizer":"自定义tokenizer的名称","filter":["自定义tokenfilter的名称","..."]}}
6、测试自定义分词器1.将该分词器设置到一个索引上(图1示)2.通过该索引来引用这个分词器进行测试,包含表情符和新停止词(图2示)3.通过该索引来引用这个分词器进行测试,包含手机号和新停止词(图3示)