Elasticsearch Synonyms - Как определяется приоритет? - PullRequest
1 голос
/ 08 октября 2019

Скажем, у меня есть файл синонимов с двумя строчками синонимов ниже

ft , synonym_1
10 ft , synonym_2

Когда я использую этот файл в анализаторе и анализирую слово "10 футов", я получаю следующее:

{
  "tokens": [
    {
      "token": "10"
    },
    {
      "token": "ft"
    },
    {
      "token": "synonym_2",
    }
  ]
}

synonym_1 не появляется, даже если "ft" соответствует токену в анализируемом тексте. Это из-за некоторого приоритета с одиночными токенами и фразами? Соответствует ли "10 футов" больше проанализированного текста и, следовательно, это единственный синоним, который вступает в силу? Есть ли способ заставить первый синоним работать в этом случае?

Примечание: я использую токенайзер пробелов и анализирую текст "30 футов", который дает мне синоним_1. Только когда «10 футов» появляется точно, что первый синоним нарушен.

"simplified_analyzer": {
  "filter": [
      "lowercase",
      "stemmer",
      "synonyms",
      "edge_ngrams",
      "remove_duplicates"
  ],
  "char_filter" => ["remove_html", "remove_non_alphanumeric"],
  "tokenizer" => "whitespace"
}

Нужно ли использовать второй фильтр синонимов для обработки отдельных слов?

...