Добавление проверки орфографии в запросы в поиске ИИ Azure
Внимание
Проверка орфографии предоставляется в общедоступной предварительной версии в соответствии с дополнительными условиями использования. Она доступна с помощью портал Azure, предварительных версий REST API и бета-версий библиотек пакета SDK Azure.
Вы можете улучшить отзыв, исправив слова в запросе, прежде чем они достигают поисковой системы. Параметр speller
поддерживается для всех типов запросов текста (не вектора).
Необходимые компоненты
Служба поиска на уровне "Базовый" или выше в любом регионе.
Существующий индекс поиска с содержимым на поддерживаемом языке.
Запрос , имеющий
speller=lexicon
иqueryLanguage
устанавливающий поддерживаемый язык. Проверка орфографии работает на строках, передаваемых в параметреsearch
. Он не поддерживается для фильтров, нечеткого поиска, поиска подстановочных знаков, регулярных выражений или векторных запросов.
Используйте клиент поиска, поддерживающий предварительный просмотр API-интерфейсов в запросе запроса. Вы можете использовать клиент REST или бета-версии пакетов SDK Azure.
Клиентская библиотека | Версии |
---|---|
REST API | Версии 2020-06-30-Preview и более поздних версий. Рекомендуется использовать последнюю предварительную версию API. 2024-05-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=2024-05-01-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=2024-05-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-index/docs/search?api-version=2024-05-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).
Язык | 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
, анализатор языка и язык, в котором состоит содержимое, поэтому не забудьте задать область запросов соответствующим образом, чтобы избежать неправильного результата.