删除重复词元过滤器
编辑删除重复词元过滤器编辑
删除同一位置的重复词元。
remove_duplicates
过滤器使用 Lucene 的 RemoveDuplicatesTokenFilter。
示例编辑
要查看 remove_duplicates
过滤器的作用,您首先需要生成一个包含同一位置重复词元的词元流。
以下 分析 API 请求使用 keyword_repeat
和 stemmer
过滤器为 jumping dog
创建词干提取和未词干提取的词元。
response = client.indices.analyze( body: { tokenizer: 'whitespace', filter: [ 'keyword_repeat', 'stemmer' ], text: 'jumping dog' } ) puts response
GET _analyze { "tokenizer": "whitespace", "filter": [ "keyword_repeat", "stemmer" ], "text": "jumping dog" }
API 返回以下响应。请注意,位置 1
中的 dog
词元是重复的。
{ "tokens": [ { "token": "jumping", "start_offset": 0, "end_offset": 7, "type": "word", "position": 0 }, { "token": "jump", "start_offset": 0, "end_offset": 7, "type": "word", "position": 0 }, { "token": "dog", "start_offset": 8, "end_offset": 11, "type": "word", "position": 1 }, { "token": "dog", "start_offset": 8, "end_offset": 11, "type": "word", "position": 1 } ] }
要删除一个重复的 dog
词元,请将 remove_duplicates
过滤器添加到之前的分析 API 请求中。
response = client.indices.analyze( body: { tokenizer: 'whitespace', filter: [ 'keyword_repeat', 'stemmer', 'remove_duplicates' ], text: 'jumping dog' } ) puts response
GET _analyze { "tokenizer": "whitespace", "filter": [ "keyword_repeat", "stemmer", "remove_duplicates" ], "text": "jumping dog" }
API 返回以下响应。现在位置 1
中只有一个 dog
词元。
{ "tokens": [ { "token": "jumping", "start_offset": 0, "end_offset": 7, "type": "word", "position": 0 }, { "token": "jump", "start_offset": 0, "end_offset": 7, "type": "word", "position": 0 }, { "token": "dog", "start_offset": 8, "end_offset": 11, "type": "word", "position": 1 } ] }
添加到分析器编辑
以下 创建索引 API 请求使用 remove_duplicates
过滤器来配置一个新的 自定义分析器。
此自定义分析器使用 keyword_repeat
和 stemmer
过滤器为流中的每个词元创建词干提取和未词干提取的版本。然后,remove_duplicates
过滤器会删除同一位置的任何重复词元。
response = client.indices.create( index: 'my-index-000001', body: { settings: { analysis: { analyzer: { my_custom_analyzer: { tokenizer: 'standard', filter: [ 'keyword_repeat', 'stemmer', 'remove_duplicates' ] } } } } } ) puts response
PUT my-index-000001 { "settings": { "analysis": { "analyzer": { "my_custom_analyzer": { "tokenizer": "standard", "filter": [ "keyword_repeat", "stemmer", "remove_duplicates" ] } } } } }