Подтвердить что ты не робот

Взаимодействие с высоким коэффициентом усиления с синонимным фильтром

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

        synonym_filter :
            type : synonym
            synonyms_path : synonyms.txt
            ignore_case : true
            expand : true
            format : solr

В файле синонимов мы имеем синоним, определяемый следующим образом:

dawdle, время отходов

Тогда в наших данных у нас есть сущность с полем имени "dawdle company".

Из-за фильтра синонимов это анализируется на что-то вроде:

1 -dawdle- 2 -company- 3
1 -wasted- 2 -time- 3

Со временем и компания находится в том же положении. Затем, выполняя поиск "потерянного времени", мы получаем удар в этом объекте. Мы хотели бы, чтобы основные моменты были "бездельничающими", поскольку это эквивалентный синоним, но кажется, что поиск в поисковых системах выглядит как два удара, так как он соответствует "потраченным впустую" и "времени", и он возвращает два основных момента: "dawdle" и "company" ".

Есть ли рекомендуемый способ решения таких проблем, когда неожиданное слово возвращается в основных моментах, поскольку оно занимает ту же позицию слова поиска, который был вставлен из-за синонима?

4b9b3361

Ответ 1

@SergeyS ситуация, которую вы и @user2430530 описана в этом разделе документации.

И предложение состоит в том, чтобы попытаться определить один термин для каждой серии синонимов, чтобы не возвращаться к этому количеству элементов, выделенных в результате.

Что-то вроде этого:

"analysis": {
  "analyzer": {
    "synonym": {
      "tokenizer": "whitespace",
      "filter": [
        "synonym"
      ]
    }
  },
  "filter": {
    "synonym": {
      "type": "synonym",
      "synonyms": [
        "dawdle, waste time=>waste_time"
      ]
    }
  }
}

Затем вы получите желаемый результат от ES:

        "highlight": {
           "text": [
              "some <em>dawdle</em> company"
           ]
        }