Фильтр токенов Multiplexer
Фильтр токенов типа multiplexer будет генерировать несколько токенов в одной позиции, при этом каждая версия токена будет обработана с помощью разного фильтра. Идентичные выходные токены в одной позиции будут удалены.
Если входной поток токенов содержит дублированные токены, они также будут удалены фильтром multiplexer.
Параметры
| filters | список фильтров токенов, которые нужно применить к входным токенам. Это могут быть любые фильтры токенов, определенные в других местах в отображениях индекса. Фильтры можно объединять, используя запятую в качестве разделителя, например, |
Shingle или многословные фильтры синонимов токенов не будут работать должным образом, когда они объявлены в массиве filters, потому что они выполняют внутренний предварительный просмотр, который не поддерживается фильтром multiplexer.
- preserve_original
- если
true(по умолчанию), то выводить исходный токен дополнительно к отфильтрованным токенам
Пример настроек
Вы можете настроить его так:
resp = client.indices.create(
index="multiplexer_example",
settings={
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [
"my_multiplexer"
]
}
},
"filter": {
"my_multiplexer": {
"type": "multiplexer",
"filters": [
"lowercase",
"lowercase, porter_stem"
]
}
}
}
},
)
print(resp) response = client.indices.create(
index: 'multiplexer_example',
body: {
settings: {
analysis: {
analyzer: {
my_analyzer: {
tokenizer: 'standard',
filter: [
'my_multiplexer'
]
}
},
filter: {
my_multiplexer: {
type: 'multiplexer',
filters: [
'lowercase',
'lowercase, porter_stem'
]
}
}
}
}
}
)
puts response const response = await client.indices.create({
index: "multiplexer_example",
settings: {
analysis: {
analyzer: {
my_analyzer: {
tokenizer: "standard",
filter: ["my_multiplexer"],
},
},
filter: {
my_multiplexer: {
type: "multiplexer",
filters: ["lowercase", "lowercase, porter_stem"],
},
},
},
},
});
console.log(response); PUT /multiplexer_example
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [ "my_multiplexer" ]
}
},
"filter": {
"my_multiplexer": {
"type": "multiplexer",
"filters": [ "lowercase", "lowercase, porter_stem" ]
}
}
}
}
} И протестировать так:
resp = client.indices.analyze(
index="multiplexer_example",
analyzer="my_analyzer",
text="Going HOME",
)
print(resp) response = client.indices.analyze(
index: 'multiplexer_example',
body: {
analyzer: 'my_analyzer',
text: 'Going HOME'
}
)
puts response const response = await client.indices.analyze({
index: "multiplexer_example",
analyzer: "my_analyzer",
text: "Going HOME",
});
console.log(response); POST /multiplexer_example/_analyze
{
"analyzer" : "my_analyzer",
"text" : "Going HOME"
} И получите ответ:
{
"tokens": [
{
"token": "Going",
"start_offset": 0,
"end_offset": 5,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "going",
"start_offset": 0,
"end_offset": 5,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "go",
"start_offset": 0,
"end_offset": 5,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "HOME",
"start_offset": 6,
"end_offset": 10,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "home",
"start_offset": 6,
"end_offset": 10,
"type": "<ALPHANUM>",
"position": 1
}
]
} | Стеммер также вывел токен |
Фильтры синонимов и synonym_graph используют предшествующую цепочку анализа для разбора и анализа списков синонимов и вызовут исключение, если эта цепочка содержит фильтры токенов, которые создают несколько токенов в одной позиции. Если вы хотите применить синонимы к потоку токенов, содержащему multiplexer, добавьте фильтр синонимов в каждый соответствующий список фильтров multiplexer, а не после multiplexer в основном определении цепочки токенов.
© 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-multiplexer-tokenfilter.html