Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Анализ текста ›Справочник по фильтрам токенов

Фильтр удаления дублирующих токенов

Удаляет дублирующиеся токены в одном и том же положении.

Фильтр remove_duplicates использует RemoveDuplicatesTokenFilter из Lucene.

Пример

Чтобы увидеть, как работает фильтр remove_duplicates, сначала необходимо создать поток токенов с дублирующимися токенами в одном и том же положении.

Следующий запрос API анализа использует фильтры keyword_repeat и stemmer для создания стеммированных и нестеммированных токенов для jumping dog.

GET _analyze
{
  "tokenizer": "whitespace",
  "filter": [
    "keyword_repeat",
    "stemmer"
  ],
  "text": "jumping dog"
}

API возвращает следующий ответ. Обратите внимание, что токен dog в позиции 1 дублируется.

{
  "tokens": [
    {
      "token": "jumping",
      "start_offset": 0,
      "end_offset": 7,
      "type": "word",
      "position": 0
    },
    {
      "token": "jump",
      "start_offset": 0,
      "end_offset": 7,
      "type": "word",
      "position": 0
    },
    {
      "token": "dog",
      "start_offset": 8,
      "end_offset": 11,
      "type": "word",
      "position": 1
    },
    {
      "token": "dog",
      "start_offset": 8,
      "end_offset": 11,
      "type": "word",
      "position": 1
    }
  ]
}

Чтобы удалить один из дублирующих токенов dog, добавьте фильтр remove_duplicates в предыдущий запрос API анализа.

GET _analyze
{
  "tokenizer": "whitespace",
  "filter": [
    "keyword_repeat",
    "stemmer",
    "remove_duplicates"
  ],
  "text": "jumping dog"
}

API возвращает следующий ответ. Теперь в позиции 1 есть только один токен dog.

{
  "tokens": [
    {
      "token": "jumping",
      "start_offset": 0,
      "end_offset": 7,
      "type": "word",
      "position": 0
    },
    {
      "token": "jump",
      "start_offset": 0,
      "end_offset": 7,
      "type": "word",
      "position": 0
    },
    {
      "token": "dog",
      "start_offset": 8,
      "end_offset": 11,
      "type": "word",
      "position": 1
    }
  ]
}

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

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

Этот пользовательский анализатор использует фильтры keyword_repeat и stemmer для создания стеммированной и нестеммированной версии каждого токена в потоке. Фильтр remove_duplicates затем удаляет любые дублирующиеся токены в одном и том же положении.

PUT my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {
          "tokenizer": "standard",
          "filter": [
            "keyword_repeat",
            "stemmer",
            "remove_duplicates"
          ]
        }
      }
    }
  }
}

© 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/7.17/analysis-remove-duplicates-tokenfilter.html

Spec-Zone.ru

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