Как маркировать термин римскими цифрами в ElasticSearch? - PullRequest
1 голос
/ 13 февраля 2020

При создании токенизатора путем регистрации символов токена, как показано ниже, римский 'X' не может быть зарегистрирован (тестовая версия ES: ES6.7, ES5.6)

      "tokenizer": {
        "autocomplete": {
          "type": "edge_ngram",
          "min_gram": 1,
          "max_gram": 14,
          "token_chars": [
            "Ⅹ"
          ]
        }
    }

Журнал ошибок похож на

{"error": {"root_cause": [{"type": "remote_transport_exception", "reason": "[node02] [192.168.115.x: 9300] [index: admin / create ] "}]," type ":" invalid_argument_exception "," reason ":" Unknown тип токена: 'ⅹ' , должен быть одним из [symbol, private_use, para_separator, start_punctuation , неназначенный, вмещающий_признак, коннектор_пунктуации, буквенный_номер, другой_номер, математический_имвол, нижний регистр_символа, пробел_сепаратор, суррогатный, начальный_квот_пунктуации, десятичный_цифровый_значение, диг__молоток, верхний_имень__множества_пункт__буквенного_значения, знак_молвца, символ_блока_переменной_, знак_молвца, знак_молвца, знак_молвца, символ_блока_блока_цены_имвола, символ_блока other_letter, line_separator, titlecase_letter, буква, пунктуация, combining_spacing_mark, final_quote_punctuation, пробел] "}," status ": 400}

Как я могу разбить римские цифры на термины?

1 Ответ

1 голос
/ 14 февраля 2020

Сообщение об ошибке, четко указывающее, что ваш роман X не является действительным token type. В сообщении об ошибке также перечисляются допустимые параметры для token type, как показано ниже:

должен быть одним из [символ, private_use, параграфа_отделителя, start_punctuation, неназначенный, enclosing_mark, connector_punctuation, letter_number, other_number, math_symbol , lowercase_letter, space_separator, суррогат, initial_quote_punctuation, decimal_digit_number, ди git, other_punctuation, dash_punctuation, currency_symbol, non_spacing_mark, формат, modifier_letter, контроль, uppercase_letter, other_symbol, end_punctuation, modifier_symbol, other_letter, line_separator, titlecase_letter, письма, знаки препинания, combining_spacing_mark, final_quote_punctuation, whitespace]

Проблема заключается в вашем синтаксисе, если вы ссылаетесь на официальное ES для c https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-edgengram-tokenizer.html для токенов, то вы можете понять, что это означает как объяснено ниже:

Классы символов, которые должны быть включены в токен. Elasticsearch будет разделен на символы, которые не принадлежат к указанным классам. По умолчанию используется [] (оставить все символы).

И ниже он снова указывает действительные значения как digit, letter, также в той же ссылке есть несколько примеров, где они использовали token_chars с действительными значения.

Ваша проблема будет решена, если вы замените X на letter в настройках вашего анализатора.

...