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

Фильтр токенов Flatten graph

Сглаживает граф токенов, созданный фильтром токенов graph, например synonym_graph или word_delimiter_graph.

Сглаживание графа токенов, содержащего токены с несколькими позициями, делает его подходящим для индексирования. В противном случае индексирование не поддерживает графи токенов с токенами, имеющими несколько позиций.

Сглаживание графов — это процесс с потерей данных.

Если возможно, избегайте использования фильтра flatten_graph. Вместо этого используйте фильтры токенов graph только в анализаторах поиска. Это устранит необходимость в фильтре flatten_graph.

Фильтр flatten_graph использует FlattenGraphFilter из Lucene.

Пример

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

Следующий запрос API анализа использует фильтр synonym_graph для добавления dns как синонима с несколькими позициями для domain name system в тексте domain name system is fragile:

GET /_analyze
{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "synonym_graph",
      "synonyms": [ "dns, domain name system" ]
    }
  ],
  "text": "domain name system is fragile"
}

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

token graph dns synonym ex

Индексирование не поддерживает графи токенов, содержащие токены с несколькими позициями. Чтобы сделать этот граф токенов подходящим для индексирования, необходимо его сгладить.

Для сглаживания графа токенов добавьте фильтр flatten_graph после фильтра synonym_graph в предыдущем запросе API анализа.

GET /_analyze
{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "synonym_graph",
      "synonyms": [ "dns, domain name system" ]
    },
    "flatten_graph"
  ],
  "text": "domain name system is fragile"
}

Фильтр создает следующий сглаженный граф токенов, подходящий для индексирования.

token graph dns invalid ex

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

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

В этом анализаторе пользовательский фильтр word_delimiter_graph создаёт графи токенов, содержащих склеенные токены с несколькими позициями. Фильтр flatten_graph сглаживает эти графи токенов, делая их пригодными для индексирования.

PUT /my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_index_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "my_custom_word_delimiter_graph_filter",
            "flatten_graph"
          ]
        }
      },
      "filter": {
        "my_custom_word_delimiter_graph_filter": {
          "type": "word_delimiter_graph",
          "catenate_all": true
        }
      }
    }
  }
}

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

Spec-Zone.ru

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