映射字符过滤器
编辑映射字符过滤器编辑
mapping
字符过滤器接受一个键值对映射。每当它遇到一个与键相同的字符串时,它就会用与该键关联的值替换它们。
匹配是贪婪的;在给定点匹配的最长模式获胜。允许替换为空字符串。
mapping
过滤器使用 Lucene 的 MappingCharFilter。
示例编辑
以下 分析 API 请求使用 mapping
过滤器将印度-阿拉伯数字 (٠١٢٣٤٥٦٧٨٩) 转换为阿拉伯-拉丁等效数字 (0123456789),将文本 My license plate is ٢٥٠١٥
更改为 My license plate is 25015
。
response = client.indices.analyze( body: { tokenizer: 'keyword', char_filter: [ { type: 'mapping', mappings: [ '٠ => 0', '١ => 1', '٢ => 2', '٣ => 3', '٤ => 4', '٥ => 5', '٦ => 6', '٧ => 7', '٨ => 8', '٩ => 9' ] } ], text: 'My license plate is ٢٥٠١٥' } ) puts response
GET /_analyze { "tokenizer": "keyword", "char_filter": [ { "type": "mapping", "mappings": [ "٠ => 0", "١ => 1", "٢ => 2", "٣ => 3", "٤ => 4", "٥ => 5", "٦ => 6", "٧ => 7", "٨ => 8", "٩ => 9" ] } ], "text": "My license plate is ٢٥٠١٥" }
过滤器生成以下文本
[ My license plate is 25015 ]
可配置参数编辑
-
mappings
-
(必填*, 字符串数组) 映射数组,每个元素都具有
key => value
的形式。必须指定此参数或
mappings_path
参数。 -
mappings_path
-
(必填*, 字符串) 包含
key => value
映射的文件路径。此路径必须是相对于
config
位置的绝对路径或相对路径,并且文件必须是 UTF-8 编码的。文件中每个映射必须用换行符分隔。必须指定此参数或
mappings
参数。
自定义和添加到分析器编辑
要自定义 mappings
过滤器,请复制它以创建新自定义字符过滤器的基础。您可以使用其可配置参数修改过滤器。
以下 创建索引 API 请求使用自定义 mappings
过滤器 my_mappings_char_filter
配置一个新的 自定义分析器。
my_mappings_char_filter
过滤器将 :)
和 :(
表情符号替换为文本等效项。
response = client.indices.create( index: 'my-index-000001', body: { settings: { analysis: { analyzer: { my_analyzer: { tokenizer: 'standard', char_filter: [ 'my_mappings_char_filter' ] } }, char_filter: { my_mappings_char_filter: { type: 'mapping', mappings: [ ':) => _happy_', ':( => _sad_' ] } } } } } ) puts response
PUT /my-index-000001 { "settings": { "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "standard", "char_filter": [ "my_mappings_char_filter" ] } }, "char_filter": { "my_mappings_char_filter": { "type": "mapping", "mappings": [ ":) => _happy_", ":( => _sad_" ] } } } } }
以下 分析 API 请求使用自定义 my_mappings_char_filter
将 :(
替换为 _sad_
,文本为 I'm delighted about it :(
。
GET /my-index-000001/_analyze { "tokenizer": "keyword", "char_filter": [ "my_mappings_char_filter" ], "text": "I'm delighted about it :(" }
过滤器生成以下文本
[ I'm delighted about it _sad_ ]