Эластичность поиска слова близость

Есть ли в 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 определяет, насколько близкими должны быть термины, чтобы документ вообще считался совпадающим. Технически это количество шагов, которое необходимо выполнить, чтобы оно стало более сложным с большим количеством слов в запросе, но с двумя терминами это упрощает расстояние. Помимо этого, они должны ранжироваться выше с более близкой близостью, что мы и хотим.

Другие вопросы по тегам