OpenSearch Повышающий запрос: Как усилить запрос и примеры

Для определения запросов в OpenSearch используется комплексный язык запросов DSL (Domain Specific Language), основанный на JSON. DSL использует два отдельных типа запросов: листовые запросы и составные запросы.

  • Листовые запросы - как и запросы на совпадение, термин и диапазон, листовые запросы ищут конкретное значение в определенном поле. Эти запросы могут использоваться сами по себе.
  • Составные запросы - они изменяют поведение других составных или листовых запросов, объединяют их результаты и/или переключают контекст с запроса на фильтр. Можно логически объединить множество запросов, например запросы bool и dis_max, или изменить поведение множества запросов с помощью составных запросов, например запросы constant_score и boosting.

При усилении запроса возвращаются только документы, соответствующие положительному запросу; при этом минимизируется оценка документов, соответствующих отрицательному запросу.

Для чего используется повышающий запрос в OpenSearch?

Усиливающие запросы возвращают документы, соответствующие положительному запросу, при этом снижая оценку релевантности документов, соответствующих отрицательному запросу. С помощью повышающего запроса вы можете понизить рейтинг определенных документов, не исключая их из результатов поиска.

Чтобы лучше понять принцип использования усиления запроса, представьте, что у вас есть набор критериев поиска и набор документов, удовлетворяющих этим критериям. Существует подмножество этих документов, обладающих определенными характеристиками, которые могут быть проверены запросом OpenSearch, и эти документы должны быть перемещены в конец списка результатов, даже если вы хотите, чтобы пользователь увидел все эти статьи. Поэтому мы используем отрицательный бустинг по этому запросу.

Как реализовать бустинг-запрос

Бустинг-запросы имеют три параметра верхнего уровня, а именно:

  • positive: обязательный параметр объекта запроса, который представляет собой запрос, который вы хотите выполнить. Каждый возвращенный документ должен соответствовать запросу. Это основной запрос, определяющий критерии, по которым будут возвращаться документы.
  • negative: обязательный параметр объекта запроса, представляющий запрос, который был использован для снижения оценки релевантности документов, которые совпали. Запрос boosting определяет итоговую оценку релевантности документа следующим образом: если возвращаемый документ соответствует как положительному, так и отрицательному запросу, возьмите начальную оценку релевантности из положительного запроса и умножьте ее на значение negative_boost.
  • negative_boost: обязательный параметр типа float. Оценка релевантности документов, соответствующих отрицательному запросу, уменьшается с помощью этого числа с плавающей точкой, которое находится в диапазоне от 0 до 1,0.

Результаты отрицательных запросов умножаются на значение от 0 до 1, которое называется "negative_boost". Значение отрицательного запроса уменьшается до четверти значения положительного запроса, если negative_boost установлен на 0,25; до половины при 0,5, до одной десятой при 0,1 и т. д. В результате вы получаете большую свободу действий при оценке запросов.

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

Принимаются как положительные, так и отрицательные запросы. Документы, которые также соответствуют отрицательному запросу "C++", будут понижены в рейтинге путем умножения исходного _score документа на negative_boost. Только документы, соответствующие положительному запросу "Programming", будут включены в список результатов. Любые документы в верхнем примере, содержащие любой из отрицательных терминов, будут уменьшены в два раза.

В другом примере ниже нам нужны книги с OpenSearch в названии, но мы также хотим снизить релевантность книг, опубликованных до 2017 года.

В верхнем примере мы использовали диапазон запросов в качестве отрицательного запроса в повышении запроса, чтобы применить дефлятор на релевантность, который делает книги, опубликованные после 2017 года с "OpenSearch" в названии, наиболее релевантными книгами.

Примечания и полезные сведения

  • В контексте запроса баллы вычисляются как числа с плавающей точкой одинарной точности с точностью 24 бита для значащего числа. Вычисления баллов, точность которых превышает точность знака, будут преобразованы в плавающие числа с некоторой потерей точности.
  • Используйте контекст фильтра для всех остальных пунктов запроса и контекст запроса только для условий, которые должны влиять на оценку документов, которые совпадают (т. е. насколько близко документ совпадает).
Понравилась статья? Поделиться с друзьями:
Добавить комментарий