Взаимодействие с высоким коэффициентом усиления с синонимным фильтром
У нас есть анализатор, который включает фильтр синонима, который определяется следующим образом:
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" ".
Есть ли рекомендуемый способ решения таких проблем, когда неожиданное слово возвращается в основных моментах, поскольку оно занимает ту же позицию слова поиска, который был вставлен из-за синонима?
Ответы
Ответ 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"
]
}