ICU 分词器
编辑ICU 分词器
编辑根据 UAX #29:Unicode 文本分段 中定义的词边界将文本分词为单词。它的行为与 standard
分词器 非常相似,但通过使用基于字典的方法识别泰语、老挝语、中文、日语和韩语中的单词,并使用自定义规则将缅甸语和高棉语文本分解为音节,从而为某些亚洲语言提供了更好的支持。
PUT icu_sample { "settings": { "index": { "analysis": { "analyzer": { "my_icu_analyzer": { "tokenizer": "icu_tokenizer" } } } } } }
规则自定义
编辑此功能在 Lucene 中被标记为实验性
您可以通过指定每个脚本的规则文件来自定义 icu-tokenizer
的行为,请参阅 RBBI 规则语法参考 以获取更详细的说明。
要添加 icu 分词器规则,请设置 rule_files
设置,该设置应包含以逗号分隔的 code:rulefile
对列表,格式如下:四字母 ISO 15924 脚本代码,后跟一个冒号,然后是规则文件名。规则文件放置在 ES_HOME/config
目录中。
作为规则文件如何使用的演示,请将以下用户文件保存到 $ES_HOME/config/KeywordTokenizer.rbbi
.+ {200};
然后创建一个分析器来使用此规则文件,如下所示
PUT icu_sample { "settings": { "index": { "analysis": { "tokenizer": { "icu_user_file": { "type": "icu_tokenizer", "rule_files": "Latn:KeywordTokenizer.rbbi" } }, "analyzer": { "my_analyzer": { "type": "custom", "tokenizer": "icu_user_file" } } } } } } GET icu_sample/_analyze { "analyzer": "my_analyzer", "text": "Elasticsearch. Wow!" }
上面的 analyze
请求返回以下内容
{ "tokens": [ { "token": "Elasticsearch. Wow!", "start_offset": 0, "end_offset": 19, "type": "<ALPHANUM>", "position": 0 } ] }