条件标记过滤器
编辑条件标记过滤器编辑
将一组标记过滤器应用于与提供的谓词脚本中的条件匹配的标记。
此过滤器使用 Lucene 的 ConditionalTokenFilter。
示例编辑
以下 分析 API 请求使用 condition
过滤器来匹配 THE QUICK BROWN FOX
中少于 5 个字符的标记。然后,它将 lowercase
过滤器应用于那些匹配的标记,将它们转换为小写。
response = client.indices.analyze( body: { tokenizer: 'standard', filter: [ { type: 'condition', filter: [ 'lowercase' ], script: { source: 'token.getTerm().length() < 5' } } ], text: 'THE QUICK BROWN FOX' } ) puts response
GET /_analyze { "tokenizer": "standard", "filter": [ { "type": "condition", "filter": [ "lowercase" ], "script": { "source": "token.getTerm().length() < 5" } } ], "text": "THE QUICK BROWN FOX" }
该过滤器产生以下标记
[ the, QUICK, BROWN, fox ]
可配置参数编辑
自定义和添加到分析器编辑
要自定义 condition
过滤器,请复制它以创建新的自定义标记过滤器的基础。您可以使用其可配置参数修改过滤器。
例如,以下 创建索引 API 请求使用自定义 condition
过滤器来配置新的 自定义分析器。自定义 condition
过滤器匹配流中的第一个标记。然后,它使用 reverse
过滤器反转匹配的标记。
response = client.indices.create( index: 'palindrome_list', body: { settings: { analysis: { analyzer: { whitespace_reverse_first_token: { tokenizer: 'whitespace', filter: [ 'reverse_first_token' ] } }, filter: { reverse_first_token: { type: 'condition', filter: [ 'reverse' ], script: { source: 'token.getPosition() === 0' } } } } } } ) puts response
PUT /palindrome_list { "settings": { "analysis": { "analyzer": { "whitespace_reverse_first_token": { "tokenizer": "whitespace", "filter": [ "reverse_first_token" ] } }, "filter": { "reverse_first_token": { "type": "condition", "filter": [ "reverse" ], "script": { "source": "token.getPosition() === 0" } } } } } }