Добавление проверка орфографии в запросы в поиске ИИ Azure

Внимание

Проверка орфографии предоставляется в общедоступной предварительной версии в соответствии с дополнительными условиями использования. Она доступна с помощью портал Azure, предварительных версий REST API и бета-версий библиотек пакета SDK Azure.

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

Необходимые компоненты

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

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

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

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

Клиентская библиотека Версии
REST API Версии 2020-06-30-Preview и более поздних версий. Текущая версия — 2023-10-01-Preview
Пакет Azure SDK для .NET версия 11.5.0-beta.5
Пакет Azure SDK для Java версия 11.6.0-beta.5
Пакет SDK для Azure для JavaScript версия 11.3.0-beta.8
Пакет SDK для Azure для Python версия 11.4.0b3

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

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

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

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

  • К несовместимым формам запросов, которые обходят анализ текста, относятся: подстановочный знак, регулярное выражение, нечеткое соответствие.
  • К совместимым формам запросов относятся: поиск по полям, поиск с учетом расположения, повышение приоритета терминов.

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

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-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-index/docs/search?api-version=2020-06-30-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).

Язык queryLanguage
английский [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, анализатора языка и языка, в котором состоит содержимое, поэтому обязательно область запросы, чтобы избежать неправильного результата.

Следующие шаги