Добавление проверки орфографии в запросы в Поиск с использованием ИИ Azure (предварительная версия)

Примечание

Поиск с использованием ИИ Azure доступна через портал Azure, REST API и Azure SDKs. Он также лежит в основе Foundry IQ — управляемого слоя знаний, который преобразует корпоративный контент в многократно используемые базы знаний с учетом разрешений доступа для агентов на портале Microsoft Foundry.

Важно

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

Вы можете улучшить отзыв, исправив слова в запросе, прежде чем они достигают поисковой системы. Параметр speller (предварительная версия) поддерживается для всех типов запросов текста (не вектора) и доступен на портале Azure, предварительной версии REST API и бета-версиях библиотек Azure SDK.

Необходимые условия

  • Служба поиска на уровне "Базовый" или выше в любом регионе.

  • Существующий индекс поиска с содержимым на поддерживаемом языке.

  • Запрос, в котором speller=lexicon и queryLanguage заданы как поддерживаемый язык. Проверка орфографии работает на строках, передаваемых в параметре search . Он не поддерживается для фильтров, нечеткого поиска, поиска подстановочных знаков, регулярных выражений или векторных запросов.

Используйте клиент поиска, поддерживающий предварительный просмотр API в запросе. Вы можете использовать клиент REST или бета-версий Azure SDKs.

Клиентская библиотека Версии
REST API Версии 2020-06-30-Preview и более поздних версий. Рекомендуется последняя предварительная версия API: 2026-08-01-preview
Azure SDK для .NET версия 11.7.0-beta.4
Azure SDK для Java версия 11.8.0-beta.7
Azure SDK для JavaScript версия 11.3.0-beta.8
Azure SDK для Python версия 11.6.0b12

В следующем примере используется индекс hotels-sample для демонстрации коррекции ошибок в орфографии в простом текстовом запросе. Без исправления орфографии запрос возвращает нулевые результаты. После исправления запрос возвращает один результат для семейно-ориентированного курорта Джонсона.

POST https://[service name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2026-08-01-preview
{
    "search": "famly acitvites",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "queryType": "simple",
    "select": "HotelId,HotelName,Description,Category,Tags",
    "count": true
}

Исправление орфографии на полном Lucene

Исправление орфографии возникает в отдельных терминах запроса, которые проходят анализ текста, поэтому можно использовать параметр орфографии с некоторыми запросами Lucene, но не другими.

  • Несовместимые формы запросов, которые обходят анализ текста: подстановочный знак, regex, нечеткий
  • Совместимые формы запросов включают: поиск по полям, поиск по близости, повышение весомости термина

В этом примере используется полевой поиск по полю "Категория" с использованием полного синтаксиса Lucene и с опечаткой в запросе. Включив проверку орфографии, опечатка в "Suiite" исправляется, и запрос завершается успешно.

POST https://[service name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2026-08-01-preview
{
    "search": "Category:(Resort and Spa) OR Category:Suiite",
    "queryType": "full",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "select": "Category",
    "count": true
}

Исправление орфографии с семантическим ранжированием

Этот запрос с опечатками в каждом термине, кроме одного, проходит исправления орфографии, чтобы вернуть соответствующие результаты. Дополнительные сведения см. в разделе "Настройка семантического ранжирования".

POST https://[service name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2026-08-01-preview
{
    "search": "hisotoric hotell wiht great restrant nad wiifi",
    "queryType": "semantic",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "searchFields": "HotelName,Tags,Description",
    "select": "HotelId,HotelName,Description,Category,Tags",
    "count": true
}

Поддерживаемые языки

Допустимые значения queryLanguage можно найти в следующей таблице, скопированной из списка поддерживаемых языков (справочник по REST API).

Язык языкЗапросов
Английский [EN] EN, EN-US (по умолчанию)
Испанский [ES] ES, ES-ES (по умолчанию)
Французский [FR] FR, FR-FR (по умолчанию)
Немецкий [DE] DE, DE-DE (по умолчанию)
Голландский [NL] NL, NL-BE, NL-NL (по умолчанию)

Примечание

Ранее, хотя семантический рангер был в предварительной версии, queryLanguage параметр также использовался для семантического ранжирования. Семантический рангер теперь не зависит от языка.

Соображения по анализатору языка

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

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

Чтобы узнать, как языковые библиотеки используются в Поиск с использованием ИИ Azure:

  • Языковые анализаторы можно вызывать во время индексирования и выполнения запросов, и являются Apache Lucene (например, "de.lucene") или Microsoft ("de.microsoft").

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

В запросе значение, назначенное на queryLanguage, применяется к speller.

Примечание

Согласованность языка между различными значениями свойств является проблемой только в том случае, если вы используете анализаторы языка. Если вы используете анализаторы, не зависящие от языка (например, ключевые слова, простые, стандартные, стоп, пробелы или standardasciifolding.lucene), queryLanguage то это значение может быть любым нужным.

Хотя содержимое в индексе поиска может быть составлено на нескольких языках, входные данные запроса, скорее всего, в одном из них. Поисковая система не проверяет совместимость queryLanguage, анализатор языка и язык, в котором состоит содержимое, поэтому не забудьте задать область запросов соответствующим образом, чтобы избежать неправильного результата.

Дальнейшие действия