唯一分词过滤器
编辑唯一分词过滤器
编辑从流中移除重复的分词。例如,您可以使用unique
过滤器将the lazy lazy dog
更改为the lazy dog
。
如果only_on_same_position
参数设置为true
,则unique
过滤器只会移除相同位置的重复分词。
当only_on_same_position
为true
时,unique
过滤器的作用与remove_duplicates
过滤器相同。
示例
编辑以下分析 API请求使用unique
过滤器从the quick fox jumps the lazy fox
中移除重复的分词。
resp = client.indices.analyze( tokenizer="whitespace", filter=[ "unique" ], text="the quick fox jumps the lazy fox", ) print(resp)
response = client.indices.analyze( body: { tokenizer: 'whitespace', filter: [ 'unique' ], text: 'the quick fox jumps the lazy fox' } ) puts response
const response = await client.indices.analyze({ tokenizer: "whitespace", filter: ["unique"], text: "the quick fox jumps the lazy fox", }); console.log(response);
GET _analyze { "tokenizer" : "whitespace", "filter" : ["unique"], "text" : "the quick fox jumps the lazy fox" }
该过滤器移除the
和fox
的重复分词,产生以下输出。
[ the, quick, fox, jumps, lazy ]
添加到分析器
编辑以下创建索引 API请求使用unique
过滤器来配置一个新的自定义分析器。
resp = client.indices.create( index="custom_unique_example", settings={ "analysis": { "analyzer": { "standard_truncate": { "tokenizer": "standard", "filter": [ "unique" ] } } } }, ) print(resp)
response = client.indices.create( index: 'custom_unique_example', body: { settings: { analysis: { analyzer: { standard_truncate: { tokenizer: 'standard', filter: [ 'unique' ] } } } } } ) puts response
const response = await client.indices.create({ index: "custom_unique_example", settings: { analysis: { analyzer: { standard_truncate: { tokenizer: "standard", filter: ["unique"], }, }, }, }, }); console.log(response);
PUT custom_unique_example { "settings" : { "analysis" : { "analyzer" : { "standard_truncate" : { "tokenizer" : "standard", "filter" : ["unique"] } } } } }
可配置参数
编辑-
only_on_same_position
- (可选,布尔值) 如果为
true
,则只移除相同位置的重复分词。默认为false
。
自定义
编辑要自定义unique
过滤器,请复制它以创建新的自定义分词过滤器的基础。您可以使用其可配置参数修改过滤器。
例如,以下请求创建一个自定义unique
过滤器,其中only_on_same_position
设置为true
。
resp = client.indices.create( index="letter_unique_pos_example", settings={ "analysis": { "analyzer": { "letter_unique_pos": { "tokenizer": "letter", "filter": [ "unique_pos" ] } }, "filter": { "unique_pos": { "type": "unique", "only_on_same_position": True } } } }, ) print(resp)
response = client.indices.create( index: 'letter_unique_pos_example', body: { settings: { analysis: { analyzer: { letter_unique_pos: { tokenizer: 'letter', filter: [ 'unique_pos' ] } }, filter: { unique_pos: { type: 'unique', only_on_same_position: true } } } } } ) puts response
const response = await client.indices.create({ index: "letter_unique_pos_example", settings: { analysis: { analyzer: { letter_unique_pos: { tokenizer: "letter", filter: ["unique_pos"], }, }, filter: { unique_pos: { type: "unique", only_on_same_position: true, }, }, }, }, }); console.log(response);
PUT letter_unique_pos_example { "settings": { "analysis": { "analyzer": { "letter_unique_pos": { "tokenizer": "letter", "filter": [ "unique_pos" ] } }, "filter": { "unique_pos": { "type": "unique", "only_on_same_position": true } } } } }