谓词脚本标记过滤器
编辑谓词脚本标记过滤器编辑
删除与提供的谓词脚本不匹配的标记。该过滤器仅支持内联 Painless 脚本。脚本在 分析谓词上下文 中进行评估。
示例编辑
以下 分析 API 请求使用 predicate_token_filter
过滤器仅输出来自 the fox jumps the lazy dog
的长度超过三个字符的标记。
response = client.indices.analyze( body: { tokenizer: 'whitespace', filter: [ { type: 'predicate_token_filter', script: { source: "\n token.term.length() > 3\n " } } ], text: 'the fox jumps the lazy dog' } ) puts response
GET /_analyze { "tokenizer": "whitespace", "filter": [ { "type": "predicate_token_filter", "script": { "source": """ token.term.length() > 3 """ } } ], "text": "the fox jumps the lazy dog" }
该过滤器生成以下标记。
[ jumps, lazy ]
API 响应包含每个输出标记的位置和偏移量。请注意,predicate_token_filter
过滤器不会更改标记的原始位置或偏移量。
可配置参数编辑
自定义并添加到分析器编辑
要自定义 predicate_token_filter
过滤器,请复制它以创建新自定义标记过滤器的基础。您可以使用其可配置参数修改过滤器。
以下 创建索引 API 请求使用自定义 predicate_token_filter
过滤器 my_script_filter
配置新的 自定义分析器。
my_script_filter
过滤器删除类型不是 ALPHANUM
的标记。
response = client.indices.create( index: 'my-index-000001', body: { settings: { analysis: { analyzer: { my_analyzer: { tokenizer: 'standard', filter: [ 'my_script_filter' ] } }, filter: { my_script_filter: { type: 'predicate_token_filter', script: { source: "\n token.type.contains(\"ALPHANUM\")\n " } } } } } } ) puts response
PUT /my-index-000001 { "settings": { "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "standard", "filter": [ "my_script_filter" ] } }, "filter": { "my_script_filter": { "type": "predicate_token_filter", "script": { "source": """ token.type.contains("ALPHANUM") """ } } } } } }