Эластичность поиска слова близость
Есть ли в asticsearch способ повысить оценку документов, в которых слова запроса находятся близко друг к другу в документе? Речь идет не только о словах, которые вместе, поскольку это может быть решено с помощью черепицы, но и о словах, которые находятся рядом, где между ними может быть другое неважное слово.
Пример:
документ 1:
close words in documents detection
документ 2:
close words in detection documents
запрос:
close documents
Поэтому я бы хотел получить более высокий балл за первый документ и более низкий за второй.
Если бы эти слова были рядом друг с другом, я бы использовал опоясывающий лишай и два или три слова. Этот подход, однако, не учитывает слова, близкие друг к другу.
1 ответ
Следующий запрос представляет собой измененную форму запроса в эластичных документах и должен соответствовать требованиям. Он использует функцию близости в ElasticSearch, известную как "фраза соответствия".
POST /my_index/my_type/_search
{
"query": {
"match_phrase": {
"text": {
"query": "close documents",
"slop": 50
}
}
}
}
Приведенный выше параметр slop определяет, насколько близкими должны быть термины, чтобы документ вообще считался совпадающим. Технически это количество шагов, которое необходимо выполнить, чтобы оно стало более сложным с большим количеством слов в запросе, но с двумя терминами это упрощает расстояние. Помимо этого, они должны ранжироваться выше с более близкой близостью, что мы и хотим.