Фильтр токенов Trim
Удаляет начальные и конечные пробелы из каждого токена в потоке. Хотя это может изменить длину токена, фильтр trim не изменяет смещения токена.
Фильтр trim использует TrimFilter из Lucene.
Многие часто используемые токенизаторы, такие как токенизатор standard или whitespace, по умолчанию удаляют пробелы. При использовании этих токенизаторов вам не нужно добавлять отдельный фильтр trim.
Пример
Чтобы увидеть, как работает фильтр trim, сначала необходимо создать токен, содержащий пробелы.
Следующий запрос API анализа использует токенизатор keyword для создания токена для " fox ".
resp = client.indices.analyze(
tokenizer="keyword",
text=" fox ",
)
print(resp) response = client.indices.analyze(
body: {
tokenizer: 'keyword',
text: ' fox '
}
)
puts response const response = await client.indices.analyze({
tokenizer: "keyword",
text: " fox ",
});
console.log(response); GET _analyze
{
"tokenizer" : "keyword",
"text" : " fox "
} API возвращает следующий ответ. Обратите внимание, что токен " fox " содержит пробелы исходного текста. Обратите внимание, что несмотря на изменение длины токена, start_offset и end_offset остаются неизменными.
{
"tokens": [
{
"token": " fox ",
"start_offset": 0,
"end_offset": 5,
"type": "word",
"position": 0
}
]
} Чтобы удалить пробелы, добавьте фильтр trim в предыдущий запрос API анализа.
resp = client.indices.analyze(
tokenizer="keyword",
filter=[
"trim"
],
text=" fox ",
)
print(resp) response = client.indices.analyze(
body: {
tokenizer: 'keyword',
filter: [
'trim'
],
text: ' fox '
}
)
puts response const response = await client.indices.analyze({
tokenizer: "keyword",
filter: ["trim"],
text: " fox ",
});
console.log(response); GET _analyze
{
"tokenizer" : "keyword",
"filter" : ["trim"],
"text" : " fox "
} API возвращает следующий ответ. Возвращаемый токен fox не содержит начальных и конечных пробелов.
{
"tokens": [
{
"token": "fox",
"start_offset": 0,
"end_offset": 5,
"type": "word",
"position": 0
}
]
} Добавление в анализатор
Следующий запрос API создания индекса использует фильтр trim для настройки нового настраиваемого анализатора.
resp = client.indices.create(
index="trim_example",
settings={
"analysis": {
"analyzer": {
"keyword_trim": {
"tokenizer": "keyword",
"filter": [
"trim"
]
}
}
}
},
)
print(resp) response = client.indices.create(
index: 'trim_example',
body: {
settings: {
analysis: {
analyzer: {
keyword_trim: {
tokenizer: 'keyword',
filter: [
'trim'
]
}
}
}
}
}
)
puts response const response = await client.indices.create({
index: "trim_example",
settings: {
analysis: {
analyzer: {
keyword_trim: {
tokenizer: "keyword",
filter: ["trim"],
},
},
},
},
});
console.log(response); PUT trim_example
{
"settings": {
"analysis": {
"analyzer": {
"keyword_trim": {
"tokenizer": "keyword",
"filter": [ "trim" ]
}
}
}
}
}
© 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-trim-tokenfilter.html