Фильтр токенов Keep types
Сохраняет или удаляет токены определенного типа. Например, вы можете использовать этот фильтр для изменения 3 quick foxes на quick foxes, сохранив только <ALPHANUM> (буквенно-цифровые) токены.
Типы токенов
Типы токенов устанавливаются токеннайзером при преобразовании символов в токены. Типы токенов могут различаться между токеннайзерами.
Например, токеннайзер standard может генерировать различные типы токенов, включая <ALPHANUM>, <HANGUL> и <NUM>. Более простые анализаторы, такие как токеннайзер lowercase, генерируют только тип токена word.
Некоторые фильтры токенов также могут добавлять типы токенов. Например, фильтр synonym может добавить тип токена <SYNONYM>.
Некоторые токеннайзеры не поддерживают этот фильтр токенов, например, токеннайзеры keyword, simple_pattern и simple_pattern_split, так как они не поддерживают установку атрибута типа токена.
Этот фильтр использует TypeTokenFilter Lucene.
Пример включения
Следующий запрос API анализа использует фильтр keep_types для сохранения только <NUM> (числовых) токенов из 1 quick fox 2 lazy dogs.
resp = client.indices.analyze(
tokenizer="standard",
filter=[
{
"type": "keep_types",
"types": [
"<NUM>"
]
}
],
text="1 quick fox 2 lazy dogs",
)
print(resp) response = client.indices.analyze(
body: {
tokenizer: 'standard',
filter: [
{
type: 'keep_types',
types: [
'<NUM>'
]
}
],
text: '1 quick fox 2 lazy dogs'
}
)
puts response const response = await client.indices.analyze({
tokenizer: "standard",
filter: [
{
type: "keep_types",
types: ["<NUM>"],
},
],
text: "1 quick fox 2 lazy dogs",
});
console.log(response); GET _analyze
{
"tokenizer": "standard",
"filter": [
{
"type": "keep_types",
"types": [ "<NUM>" ]
}
],
"text": "1 quick fox 2 lazy dogs"
} Фильтр генерирует следующие токены:
[ 1, 2 ]
Пример исключения
Следующий запрос API анализа использует фильтр keep_types для удаления <NUM> токенов из 1 quick fox 2 lazy dogs. Обратите внимание, что параметр mode установлен на exclude.
resp = client.indices.analyze(
tokenizer="standard",
filter=[
{
"type": "keep_types",
"types": [
"<NUM>"
],
"mode": "exclude"
}
],
text="1 quick fox 2 lazy dogs",
)
print(resp) response = client.indices.analyze(
body: {
tokenizer: 'standard',
filter: [
{
type: 'keep_types',
types: [
'<NUM>'
],
mode: 'exclude'
}
],
text: '1 quick fox 2 lazy dogs'
}
)
puts response const response = await client.indices.analyze({
tokenizer: "standard",
filter: [
{
type: "keep_types",
types: ["<NUM>"],
mode: "exclude",
},
],
text: "1 quick fox 2 lazy dogs",
});
console.log(response); GET _analyze
{
"tokenizer": "standard",
"filter": [
{
"type": "keep_types",
"types": [ "<NUM>" ],
"mode": "exclude"
}
],
"text": "1 quick fox 2 lazy dogs"
} Фильтр генерирует следующие токены:
[ quick, fox, lazy, dogs ]
Настраиваемые параметры
-
types - (Обязательно, массив строк) Список типов токенов для сохранения или удаления.
-
mode -
(Необязательно, строка) Указывает, сохранять или удалять указанные типы токенов. Допустимые значения:
-
include - (По умолчанию) Сохранить только указанные типы токенов.
-
exclude - Удалить указанные типы токенов.
-
Настройка и добавление в анализатор
Чтобы настроить фильтр keep_types, дублируйте его, чтобы создать основу для нового пользовательского фильтра токенов. Вы можете изменить фильтр, используя его настраиваемые параметры.
Например, следующий запрос API создания индекса использует настраиваемый фильтр keep_types для настройки нового пользовательского анализатора. Настраиваемый фильтр keep_types сохраняет только <ALPHANUM> (буквенно-цифровые) токены.
resp = client.indices.create(
index="keep_types_example",
settings={
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [
"extract_alpha"
]
}
},
"filter": {
"extract_alpha": {
"type": "keep_types",
"types": [
"<ALPHANUM>"
]
}
}
}
},
)
print(resp) response = client.indices.create(
index: 'keep_types_example',
body: {
settings: {
analysis: {
analyzer: {
my_analyzer: {
tokenizer: 'standard',
filter: [
'extract_alpha'
]
}
},
filter: {
extract_alpha: {
type: 'keep_types',
types: [
'<ALPHANUM>'
]
}
}
}
}
}
)
puts response const response = await client.indices.create({
index: "keep_types_example",
settings: {
analysis: {
analyzer: {
my_analyzer: {
tokenizer: "standard",
filter: ["extract_alpha"],
},
},
filter: {
extract_alpha: {
type: "keep_types",
types: ["<ALPHANUM>"],
},
},
},
},
});
console.log(response); PUT keep_types_example
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [ "extract_alpha" ]
}
},
"filter": {
"extract_alpha": {
"type": "keep_types",
"types": [ "<ALPHANUM>" ]
}
}
}
}
}
© 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-keep-types-tokenfilter.html