Поиск в индексе
После создания и заполнения индекса вы можете выполнять запросы к нему для поиска информации в содержимом индексированного документа. Вы можете получать элементы индекса на основе простого сопоставления значений полей, однако в большинстве решений для поиска используется семантика полнотекстового поиска для запросов к индексу.
Полнотекстовый поиск
Полнотекстовый поиск описывает решения для поиска, которые анализируют текстовое содержимое документа для поиска терминов запроса. Запросы полнотекстового поиска в поиске ИИ Azure основаны на синтаксисе запросов Lucene , который предоставляет широкий набор операций запроса для поиска, фильтрации и сортировки данных в индексах. Поиск ИИ Azure поддерживает два варианта синтаксиса Lucene:
- Простой — интуитивно понятный синтаксис, который позволяет легко выполнять базовые поисковые запросы, соответствующие введенным пользователем литеральным условиям.
- Полный — расширенный синтаксис, поддерживающий функции фильтрации, регулярные выражения и другие, более сложные запросы.
Клиентские приложения передают запросы в поиск ИИ Azure, указав выражение поиска вместе с другими параметрами, которые определяют, как вычисляется выражение и возвращаются результаты. Ниже приведены некоторые общие параметры, передаваемые в запрос.
- search — выражение для поиска, содержащее условия поиска.
- queryType — синтаксис Lucene, используемый для вычисления выражения (simple или full).
- searchFields — поля индекса для поиска.
- select — поля, которые будут включаться в результаты.
- searchMode — критерий для включения результатов на основе нескольких условий поиска. Например, предположим, что вы ищете комфортную гостиницу. Значение searchMode Any возвращает документы, содержащие "удобный", "отель" или оба; в то время как значение searchMode all ограничивает результаты документами, содержащими "комфортно" и "отель".
Обработка запроса осуществляется в четыре этапа.
- Анализ запроса. Выражение для поиска вычисляется и реконструируется в виде дерева соответствующих вложенных запросов. Вложенные запросы могут включать запросы терминов (поиск конкретных отдельных слов в выражении поиска - например , отель), запросы фраз (поиск многосрочных фраз, указанных в кавычках в выражении поиска - например, "бесплатная парковка" ) и префиксы (поиск терминов с указанным префиксом - например air*, который будет соответствовать дыхательным путям, кондиционированию воздуха и аэропорту).
- Лексический анализ. Термины запроса анализируются и уточняются на основе лингвистических правил. Например, текст преобразуется в нижний регистр и нетентичные стоп-слова (например, "the", "a", "is" и т. д.) удаляются. Затем слова преобразуются в их корневую форму (например, "удобный" может быть упрощено в "комфорт") и составные слова делятся на их составляющие термины.
- Извлечение документа. Термины запроса сопоставляются с индексированными терминами, и определяется набор соответствующих документов.
- Оценка. Оценка релевантности назначается каждому результату на основе вычисления частоты терминов или обратной частоты документов (TF/IDF).
Примечание.
Дополнительные сведения о запросе индекса и сведения о простом и полном синтаксисе см. в статье "Типы запросов и композиция" в службе "Поиск ИИ Azure" в документации по поиску ИИ Azure.