Применение фильтрации и сортировки
В решении для поиска пользователям, как правило, требуется возможность уточнять результаты запроса путем фильтрации и сортировки на основе значений полей. Поиск ИИ 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".