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

Фильтр токенов stemmer override

Переопределяет алгоритмы стеминга, применяя пользовательское отображение, затем защищает эти термины от модификации стемерами. Должен быть размещён перед любыми фильтрами стеминга.

Правила — отображения в формате token1[, ..., tokenN] => override.

Настройка Описание

rules

Список правил отображения.

rules_path

Путь (относительный к расположению config или абсолютный) к списку отображений.

Вот пример:

resp = client.indices.create(
    index="my-index-000001",
    settings={
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "tokenizer": "standard",
                    "filter": [
                        "lowercase",
                        "custom_stems",
                        "porter_stem"
                    ]
                }
            },
            "filter": {
                "custom_stems": {
                    "type": "stemmer_override",
                    "rules_path": "analysis/stemmer_override.txt"
                }
            }
        }
    },
)
print(resp)
response = client.indices.create(
  index: 'my-index-000001',
  body: {
    settings: {
      analysis: {
        analyzer: {
          my_analyzer: {
            tokenizer: 'standard',
            filter: [
              'lowercase',
              'custom_stems',
              'porter_stem'
            ]
          }
        },
        filter: {
          custom_stems: {
            type: 'stemmer_override',
            rules_path: 'analysis/stemmer_override.txt'
          }
        }
      }
    }
  }
)
puts response
const response = await client.indices.create({
  index: "my-index-000001",
  settings: {
    analysis: {
      analyzer: {
        my_analyzer: {
          tokenizer: "standard",
          filter: ["lowercase", "custom_stems", "porter_stem"],
        },
      },
      filter: {
        custom_stems: {
          type: "stemmer_override",
          rules_path: "analysis/stemmer_override.txt",
        },
      },
    },
  },
});
console.log(response);
PUT /my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "standard",
          "filter": [ "lowercase", "custom_stems", "porter_stem" ]
        }
      },
      "filter": {
        "custom_stems": {
          "type": "stemmer_override",
          "rules_path": "analysis/stemmer_override.txt"
        }
      }
    }
  }
}

Где файл выглядит так:

running, runs => run

stemmer => stemmer

Также можно определить правила переопределения в строчном виде:

resp = client.indices.create(
    index="my-index-000001",
    settings={
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "tokenizer": "standard",
                    "filter": [
                        "lowercase",
                        "custom_stems",
                        "porter_stem"
                    ]
                }
            },
            "filter": {
                "custom_stems": {
                    "type": "stemmer_override",
                    "rules": [
                        "running, runs => run",
                        "stemmer => stemmer"
                    ]
                }
            }
        }
    },
)
print(resp)
response = client.indices.create(
  index: 'my-index-000001',
  body: {
    settings: {
      analysis: {
        analyzer: {
          my_analyzer: {
            tokenizer: 'standard',
            filter: [
              'lowercase',
              'custom_stems',
              'porter_stem'
            ]
          }
        },
        filter: {
          custom_stems: {
            type: 'stemmer_override',
            rules: [
              'running, runs => run',
              'stemmer => stemmer'
            ]
          }
        }
      }
    }
  }
)
puts response
const response = await client.indices.create({
  index: "my-index-000001",
  settings: {
    analysis: {
      analyzer: {
        my_analyzer: {
          tokenizer: "standard",
          filter: ["lowercase", "custom_stems", "porter_stem"],
        },
      },
      filter: {
        custom_stems: {
          type: "stemmer_override",
          rules: ["running, runs => run", "stemmer => stemmer"],
        },
      },
    },
  },
});
console.log(response);
PUT /my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "standard",
          "filter": [ "lowercase", "custom_stems", "porter_stem" ]
        }
      },
      "filter": {
        "custom_stems": {
          "type": "stemmer_override",
          "rules": [
            "running, runs => run",
            "stemmer => stemmer"
          ]
        }
      }
    }
  }
}

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

Spec-Zone.ru

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