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

Фильтр токенов CJK bigram

Формирует биграммы из токенов CJK (китайский, японский и корейский).

Этот фильтр включён в встроенный анализатор языка CJK Elasticsearch. Он использует CJKBigramFilter Lucene.

Пример

Следующий запрос API analyze API демонстрирует работу фильтра токенов CJK bigram.

resp = client.indices.analyze(
    tokenizer="standard",
    filter=[
        "cjk_bigram"
    ],
    text="東京都は、日本の首都であり",
)
print(resp)
response = client.indices.analyze(
  body: {
    tokenizer: 'standard',
    filter: [
      'cjk_bigram'
    ],
    text: '東京都は、日本の首都であり'
  }
)
puts response
const response = await client.indices.analyze({
  tokenizer: "standard",
  filter: ["cjk_bigram"],
  text: "東京都は、日本の首都であり",
});
console.log(response);
GET /_analyze
{
  "tokenizer" : "standard",
  "filter" : ["cjk_bigram"],
  "text" : "東京都は、日本の首都であり"
}

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

[ 東京, 京都, 都は, 日本, 本の, の首, 首都, 都で, であ, あり ]

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

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

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

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

ignored_scripts

(Необязательно, массив скриптов символов) Массив наборов символов, для которых необходимо отключить биграммы. Возможные значения:

  • han
  • hangul
  • hiragana
  • katakana

Весь ввод, не относящийся к CJK, передаётся без изменений.

output_unigrams
(Необязательно, Булево) Если true, генерировать токены как в форме биграммы, так и униграммы. Если false, символ CJK выводится в форме униграммы, если у него нет смежных символов. По умолчанию false.

Настройка

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

resp = client.indices.create(
    index="cjk_bigram_example",
    settings={
        "analysis": {
            "analyzer": {
                "han_bigrams": {
                    "tokenizer": "standard",
                    "filter": [
                        "han_bigrams_filter"
                    ]
                }
            },
            "filter": {
                "han_bigrams_filter": {
                    "type": "cjk_bigram",
                    "ignored_scripts": [
                        "hangul",
                        "hiragana",
                        "katakana"
                    ],
                    "output_unigrams": True
                }
            }
        }
    },
)
print(resp)
response = client.indices.create(
  index: 'cjk_bigram_example',
  body: {
    settings: {
      analysis: {
        analyzer: {
          han_bigrams: {
            tokenizer: 'standard',
            filter: [
              'han_bigrams_filter'
            ]
          }
        },
        filter: {
          han_bigrams_filter: {
            type: 'cjk_bigram',
            ignored_scripts: [
              'hangul',
              'hiragana',
              'katakana'
            ],
            output_unigrams: true
          }
        }
      }
    }
  }
)
puts response
const response = await client.indices.create({
  index: "cjk_bigram_example",
  settings: {
    analysis: {
      analyzer: {
        han_bigrams: {
          tokenizer: "standard",
          filter: ["han_bigrams_filter"],
        },
      },
      filter: {
        han_bigrams_filter: {
          type: "cjk_bigram",
          ignored_scripts: ["hangul", "hiragana", "katakana"],
          output_unigrams: true,
        },
      },
    },
  },
});
console.log(response);
PUT /cjk_bigram_example
{
  "settings": {
    "analysis": {
      "analyzer": {
        "han_bigrams": {
          "tokenizer": "standard",
          "filter": [ "han_bigrams_filter" ]
        }
      },
      "filter": {
        "han_bigrams_filter": {
          "type": "cjk_bigram",
          "ignored_scripts": [
            "hangul",
            "hiragana",
            "katakana"
          ],
          "output_unigrams": 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-cjk-bigram-tokenfilter.html

Spec-Zone.ru

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