Применение фильтрации и сортировки

Завершено

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

Фильтрация результатов

Фильтры можно применять к запросам двумя способами.

  • Путем включения условий фильтра в простое выражение для поиска.
  • Путем указания выражения фильтра OData в качестве параметра $filter при использовании полного синтаксиса выражений для поиска.

Фильтр можно применить к любому доступному для фильтрации (filterable) полю в индексе.

Например, предположим, что вам требуется найти документы, содержащие текст London (Лондон), для которых в поле author (автор) указан Reviewer (Отзыв).

Для этого можно отправить следующее простое выражение для поиска.

search=London+author='Reviewer'
queryType=Simple

Кроме того, можно указать фильтр OData в параметре $filter при использовании полного синтаксиса выражений для поиска Lucene следующим образом.

search=London
$filter=author eq 'Reviewer'
queryType=Full

Совет

В выражениях OData в параметре $filter учитывается регистр символов.

Фильтрация с использованием аспектов

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

Чтобы использовать аспекты, необходимо указать аспектируемые поля (facetable), для которых требуется получить возможные значения в начальном запросе. Например, можно использовать следующие параметры для возврата всех возможных значений поля author.

search=*
facet=author

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

search=*
$filter=author eq 'selected-facet-value-here'

Сортировка результатов

По умолчанию результаты сортируются на основе оценки релевантности, назначаемой процессом запроса. Первыми в списке отображаются результаты с наивысшей оценкой соответствия. Тем не менее этот порядок сортировки можно переопределить, включив параметр OData orderby, указывающий одно доступное для сортировки поле (sortable) или несколько и порядок сортировки (asc [по возрастанию] или desc [по убыванию]).

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

search=*
$orderby=last_modified desc

Примечание.

Дополнительные сведения об использовании фильтров см. в статье "Фильтры" в службе "Поиск ИИ Azure". Сведения о работе с результатами, включая сортировку и выделение попаданий, см. в статье "Работа с результатами поиска в поиске ИИ Azure".