Spec-Zone.ru › Elasticsearch 8
›Руководство по Elasticsearch [8.17] ›Анализ текста ›Справочник по фильтрам токенов

Фильтр стоп-слов

Удаляет стоп-слова из потока токенов.

Без настройки фильтр по умолчанию удаляет следующие стоп-слова на английском языке:

a, an, and, are, as, at, be, but, by, for, if, in, into, is, it, no, not, of, on, or, such, that, the, their, then, there, these, they, this, to, was, will, with

В дополнение к английскому языку, фильтр stop поддерживает предварительно определённые списки стоп-слов для нескольких языков. Вы также можете указать собственные стоп-слова в виде массива или файла.

Фильтр stop использует StopFilter из Lucene.

Пример

Следующий запрос API analyze использует фильтр stop для удаления стоп-слов a и the из a quick fox jumps over the lazy dog:

resp = client.indices.analyze(
    tokenizer="standard",
    filter=[
        "stop"
    ],
    text="a quick fox jumps over the lazy dog",
)
print(resp)
response = client.indices.analyze(
  body: {
    tokenizer: 'standard',
    filter: [
      'stop'
    ],
    text: 'a quick fox jumps over the lazy dog'
  }
)
puts response
const response = await client.indices.analyze({
  tokenizer: "standard",
  filter: ["stop"],
  text: "a quick fox jumps over the lazy dog",
});
console.log(response);
GET /_analyze
{
  "tokenizer": "standard",
  "filter": [ "stop" ],
  "text": "a quick fox jumps over the lazy dog"
}

Фильтр производит следующие токены:

[ quick, fox, jumps, over, lazy, dog ]

Добавление в анализатор

Следующий запрос API создания индекса использует фильтр stop для конфигурации нового настраиваемого анализатора.

resp = client.indices.create(
    index="my-index-000001",
    settings={
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "tokenizer": "whitespace",
                    "filter": [
                        "stop"
                    ]
                }
            }
        }
    },
)
print(resp)
response = client.indices.create(
  index: 'my-index-000001',
  body: {
    settings: {
      analysis: {
        analyzer: {
          my_analyzer: {
            tokenizer: 'whitespace',
            filter: [
              'stop'
            ]
          }
        }
      }
    }
  }
)
puts response
const response = await client.indices.create({
  index: "my-index-000001",
  settings: {
    analysis: {
      analyzer: {
        my_analyzer: {
          tokenizer: "whitespace",
          filter: ["stop"],
        },
      },
    },
  },
});
console.log(response);
PUT /my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "whitespace",
          "filter": [ "stop" ]
        }
      }
    }
  }
}

Настраиваемые параметры

stopwords

(Необязательно, строка или массив строк) Значение языка, например _arabic_ или _thai_. По умолчанию _english_.

Каждое значение языка соответствует предварительно определённому списку стоп-слов в Lucene. См. Список стоп-слов по языку для поддерживаемых значений языка и их стоп-слов.

Также принимает массив стоп-слов.

Для пустого списка стоп-слов используйте _none_.

stopwords_path

(Необязательно, строка) Путь к файлу, содержащему список стоп-слов для удаления.

Этот путь должен быть абсолютным или относительным к местоположению config, а файл должен быть в формате UTF-8. Каждое стоп-слово в файле должно быть разделено символом новой строки.

ignore_case
(Необязательно, булево) Если true, сопоставление стоп-слов не учитывает регистр. Например, если true, стоп-слово the соответствует и удаляет The, THE или the. По умолчанию false.
remove_trailing

(Необязательно, булево) Если true, последний токен потока удаляется, если это стоп-слово. По умолчанию true.

Этот параметр должен быть false при использовании фильтра с комплешн-суггестером. Это обеспечит соответствие запросу, например, green a и предложению green apple, одновременно удаляя другие стоп-слова.

Настройка

Чтобы настроить фильтр стоп-слов, дублируйте его, чтобы создать основу для нового пользовательского фильтра токенов. Вы можете изменить фильтр, используя его настраиваемые параметры.

Например, следующий запрос создаёт пользовательский фильтр стоп-слов stop, не учитывающий регистр, который удаляет стоп-слова из списка _english_:

resp = client.indices.create(
    index="my-index-000001",
    settings={
        "analysis": {
            "analyzer": {
                "default": {
                    "tokenizer": "whitespace",
                    "filter": [
                        "my_custom_stop_words_filter"
                    ]
                }
            },
            "filter": {
                "my_custom_stop_words_filter": {
                    "type": "stop",
                    "ignore_case": True
                }
            }
        }
    },
)
print(resp)
response = client.indices.create(
  index: 'my-index-000001',
  body: {
    settings: {
      analysis: {
        analyzer: {
          default: {
            tokenizer: 'whitespace',
            filter: [
              'my_custom_stop_words_filter'
            ]
          }
        },
        filter: {
          my_custom_stop_words_filter: {
            type: 'stop',
            ignore_case: true
          }
        }
      }
    }
  }
)
puts response
const response = await client.indices.create({
  index: "my-index-000001",
  settings: {
    analysis: {
      analyzer: {
        default: {
          tokenizer: "whitespace",
          filter: ["my_custom_stop_words_filter"],
        },
      },
      filter: {
        my_custom_stop_words_filter: {
          type: "stop",
          ignore_case: true,
        },
      },
    },
  },
});
console.log(response);
PUT /my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default": {
          "tokenizer": "whitespace",
          "filter": [ "my_custom_stop_words_filter" ]
        }
      },
      "filter": {
        "my_custom_stop_words_filter": {
          "type": "stop",
          "ignore_case": true
        }
      }
    }
  }
}

Вы также можете указать собственный список стоп-слов. Например, следующий запрос создаёт пользовательский фильтр стоп-слов stop, не учитывающий регистр, который удаляет только стоп-слова and, is и the:

resp = client.indices.create(
    index="my-index-000001",
    settings={
        "analysis": {
            "analyzer": {
                "default": {
                    "tokenizer": "whitespace",
                    "filter": [
                        "my_custom_stop_words_filter"
                    ]
                }
            },
            "filter": {
                "my_custom_stop_words_filter": {
                    "type": "stop",
                    "ignore_case": True,
                    "stopwords": [
                        "and",
                        "is",
                        "the"
                    ]
                }
            }
        }
    },
)
print(resp)
response = client.indices.create(
  index: 'my-index-000001',
  body: {
    settings: {
      analysis: {
        analyzer: {
          default: {
            tokenizer: 'whitespace',
            filter: [
              'my_custom_stop_words_filter'
            ]
          }
        },
        filter: {
          my_custom_stop_words_filter: {
            type: 'stop',
            ignore_case: true,
            stopwords: [
              'and',
              'is',
              'the'
            ]
          }
        }
      }
    }
  }
)
puts response
const response = await client.indices.create({
  index: "my-index-000001",
  settings: {
    analysis: {
      analyzer: {
        default: {
          tokenizer: "whitespace",
          filter: ["my_custom_stop_words_filter"],
        },
      },
      filter: {
        my_custom_stop_words_filter: {
          type: "stop",
          ignore_case: true,
          stopwords: ["and", "is", "the"],
        },
      },
    },
  },
});
console.log(response);
PUT /my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default": {
          "tokenizer": "whitespace",
          "filter": [ "my_custom_stop_words_filter" ]
        }
      },
      "filter": {
        "my_custom_stop_words_filter": {
          "type": "stop",
          "ignore_case": true,
          "stopwords": [ "and", "is", "the" ]
        }
      }
    }
  }
}

Стоп-слова по языкам

Следующий список содержит поддерживаемые значения языка для параметра stopwords и ссылку на их предопределенные стоп-слова в Lucene.

_arabic_
Арабские стоп-слова
_armenian_
Армянские стоп-слова
_basque_
Баскские стоп-слова
_bengali_
Бенгальские стоп-слова
_brazilian_ (Brazilian Portuguese)
Стоп-слова бразильского португальского
_bulgarian_
Болгарские стоп-слова
_catalan_
Каталанские стоп-слова
_cjk_ (Chinese, Japanese, and Korean)
CJK стоп-слова
_czech_
Чешские стоп-слова
_danish_
Датские стоп-слова
_dutch_
Голландские стоп-слова
_english_
Английские стоп-слова
_estonian_
Эстонские стоп-слова
_finnish_
Финские стоп-слова
_french_
Французские стоп-слова
_galician_
Галисийские стоп-слова
_german_
Немецкие стоп-слова
_greek_
Греческие стоп-слова
_hindi_
Хинди стоп-слова
_hungarian_
Венгерские стоп-слова
_indonesian_
Индонезийские стоп-слова
_irish_
Ирландские стоп-слова
_italian_
Итальянские стоп-слова
_latvian_
Латышские стоп-слова
_lithuanian_
Литовские стоп-слова
_norwegian_
Норвежские стоп-слова
_persian_
Персидские стоп-слова
_portuguese_
Португальские стоп-слова
_romanian_
Румынские стоп-слова
_russian_
Русские стоп-слова
_serbian_
Сербские стоп-слова
_sorani_
Стоп-слова сорани
_spanish_
Испанские стоп-слова
_swedish_
Шведские стоп-слова
_thai_
Стоп-слова тайского языка
_turkish_
Стоп-слова турецкого языка

© 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-stop-tokenfilter.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API