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

Фильтр токенов Elision

Удаляет указанные элизии с начала токенов. Например, вы можете использовать этот фильтр для изменения l'avion на avion.

При отсутствии настройки, фильтр по умолчанию удаляет следующие французские элизии:

l', m', t', qu', n', s', j', d', c', jusqu', quoiqu', lorsqu', puisqu'

Настроенные версии этого фильтра включены в несколько встроенных анализаторов языка Elasticsearch:

  • Анализатор каталанского языка
  • Анализатор французского языка
  • Анализатор ирландского языка
  • Анализатор итальянского языка

Этот фильтр использует ElisionFilter Lucene.

Пример

Следующий запрос API analyze API использует фильтр elision для удаления j' из j’examine près du wharf:

resp = client.indices.analyze(
    tokenizer="standard",
    filter=[
        "elision"
    ],
    text="j’examine près du wharf",
)
print(resp)
response = client.indices.analyze(
  body: {
    tokenizer: 'standard',
    filter: [
      'elision'
    ],
    text: 'j’examine près du wharf'
  }
)
puts response
const response = await client.indices.analyze({
  tokenizer: "standard",
  filter: ["elision"],
  text: "j’examine près du wharf",
});
console.log(response);
GET _analyze
{
  "tokenizer" : "standard",
  "filter" : ["elision"],
  "text" : "j’examine près du wharf"
}

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

[ examine, près, du, wharf ]

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

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

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

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

articles

(Обязательный*, массив строк) Список элизий для удаления.

Для удаления элизии должна стоять в начале токена и сразу следовать за апострофом. И элизия, и апостроф удаляются.

Для настраиваемых фильтров elision, необходимо указать либо этот параметр, либо articles_path.

articles_path

(Обязательный*, строка) Путь к файлу, содержащему список элизий для удаления.

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

Для удаления элизии она должна стоять в начале токена и сразу следовать за апострофом. И элизия, и апостроф удаляются.

Для настраиваемых фильтров elision, необходимо указать либо этот параметр, либо articles.

articles_case
(Необязательный, булево) Если true, соответствие элизии регистронезависимое. Если false, соответствие элизии регистрозависимое. По умолчанию false.

Настройка

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

Например, следующий запрос создаёт настраиваемый регистронезависимый фильтр elision, который удаляет элизии l', m', t', qu', n', s' и j':

resp = client.indices.create(
    index="elision_case_insensitive_example",
    settings={
        "analysis": {
            "analyzer": {
                "default": {
                    "tokenizer": "whitespace",
                    "filter": [
                        "elision_case_insensitive"
                    ]
                }
            },
            "filter": {
                "elision_case_insensitive": {
                    "type": "elision",
                    "articles": [
                        "l",
                        "m",
                        "t",
                        "qu",
                        "n",
                        "s",
                        "j"
                    ],
                    "articles_case": True
                }
            }
        }
    },
)
print(resp)
response = client.indices.create(
  index: 'elision_case_insensitive_example',
  body: {
    settings: {
      analysis: {
        analyzer: {
          default: {
            tokenizer: 'whitespace',
            filter: [
              'elision_case_insensitive'
            ]
          }
        },
        filter: {
          elision_case_insensitive: {
            type: 'elision',
            articles: [
              'l',
              'm',
              't',
              'qu',
              'n',
              's',
              'j'
            ],
            articles_case: true
          }
        }
      }
    }
  }
)
puts response
const response = await client.indices.create({
  index: "elision_case_insensitive_example",
  settings: {
    analysis: {
      analyzer: {
        default: {
          tokenizer: "whitespace",
          filter: ["elision_case_insensitive"],
        },
      },
      filter: {
        elision_case_insensitive: {
          type: "elision",
          articles: ["l", "m", "t", "qu", "n", "s", "j"],
          articles_case: true,
        },
      },
    },
  },
});
console.log(response);
PUT /elision_case_insensitive_example
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default": {
          "tokenizer": "whitespace",
          "filter": [ "elision_case_insensitive" ]
        }
      },
      "filter": {
        "elision_case_insensitive": {
          "type": "elision",
          "articles": [ "l", "m", "t", "qu", "n", "s", "j" ],
          "articles_case": 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/8.17/analysis-elision-tokenfilter.html

Spec-Zone.ru

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