Фильтр уникальных токенов
Удаляет дубликаты токенов из потока. Например, вы можете использовать фильтр 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
}
}
}
}
}
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/analysis-unique-tokenfilter.html