Aggiungere il controllo ortografico alle query in Ricerca di intelligenza artificiale di Azure
Importante
La correzione ortografia è disponibile in anteprima pubblica in condizioni supplementari per l'utilizzo. È disponibile tramite le portale di Azure, le API REST di anteprima e le versioni beta delle librerie di Azure SDK.
È possibile migliorare il richiamo correggendo le parole in una query prima di raggiungere il motore di ricerca. Il speller
parametro è supportato per tutti i tipi di query di testo (non vettoriali).
Prerequisiti
Un servizio di ricerca al livello Basic o superiore, in qualsiasi area.
Indice di ricerca esistente con contenuto in una lingua supportata.
Richiesta di query con
speller=lexicon
equeryLanguage
impostata su un linguaggio supportato. Il controllo ortografico funziona sulle stringhe passate nelsearch
parametro . Non è supportato per filtri, ricerca fuzzy, ricerca con caratteri jolly, espressioni regolari o query vettoriali.
Usare un client di ricerca che supporta le API di anteprima nella richiesta di query. È possibile usare un client REST o un codice modificato per effettuare chiamate REST alle API di anteprima. È anche possibile usare le versioni beta degli SDK di Azure.
Libreria client | Versioni |
---|---|
REST API | Versioni 2020-06-30-Preview e successive. La versione corrente è 2023-10-01-Preview |
Azure SDK per .NET | versione 11.5.0-beta.5 |
Azure SDK per Java | versione 11.6.0-beta.5 |
Azure SDK per JavaScript | versione 11.3.0-beta.8 |
Azure SDK per Python | versione 11.4.0b3 |
Correzione ortografia con ricerca semplice
Nell'esempio seguente viene usato l'indice hotels-sample predefinito per illustrare la correzione ortografia in una semplice query di testo. Senza correzione ortografia, la query restituisce zero risultati. Con la correzione, la query restituisce un risultato per il resort orientato alla famiglia di 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
}
Correzione ortografia con lucene completa
La correzione ortografica si verifica in singoli termini di query che vengono sottoposti ad analisi del testo, motivo per cui è possibile usare il parametro del correttore ortografico con alcune query Lucene, ma non altre.
- I moduli di query incompatibili che ignorano l'analisi del testo includono: carattere jolly, regex, fuzzy
- I moduli di query compatibili includono: ricerca campiata, prossimità, boosting dei termini
In questo esempio viene usata la ricerca campiata sul campo Categoria, con la sintassi Lucene completa e un termine di query con errori di ortografia. Includendo il correttore ortografico, l'ortografia in "Suiite" viene corretta e la query ha esito positivo.
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
}
Correzione ortografia con classificazione semantica
Questa query, con errori di digitazione in ogni termine ad eccezione di uno, viene sottoposta a correzioni ortografiche per restituire risultati pertinenti. Per altre informazioni, vedere Configurare la classificazione semantica.
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
}
Lingue supportate
I valori validi per queryLanguage
sono disponibili nella tabella seguente, copiati dall'elenco delle lingue supportate (informazioni di riferimento sull'API REST).
Lingua | queryLanguage |
---|---|
Inglese [EN] | EN, EN-US (impostazione predefinita) |
Spagnolo [ES] | ES, ES-ES (impostazione predefinita) |
Francese [FR] | FR, FR-FR (impostazione predefinita) |
Tedesco [DE] | DE, DE-DE (impostazione predefinita) |
Olandese [NL] | NL, NL-BE, NL-NL (impostazione predefinita) |
Nota
In precedenza, mentre la classificazione semantica era in anteprima pubblica, il parametro veniva usato anche per la queryLanguage
classificazione semantica. La classificazione semantica è ora indipendente dal linguaggio.
Considerazioni sull'analizzatore del linguaggio
Gli indici che contengono contenuti non in lingua inglese spesso usano analizzatori della lingua nei campi non inglesi per applicare le regole linguistiche della lingua nativa.
Quando si aggiunge il controllo ortografico al contenuto che viene sottoposto anche all'analisi del linguaggio, è possibile ottenere risultati migliori usando lo stesso linguaggio per ogni passaggio di indicizzazione e elaborazione delle query. Ad esempio, se il contenuto di un campo è stato indicizzato usando l'analizzatore del linguaggio "fr.microsoft", le query e il controllo ortografico devono usare tutti un lessico francese o una raccolta di lingue di qualche modulo.
Per riepilogare il modo in cui vengono usate le librerie di linguaggio in Ricerca intelligenza artificiale di Azure:
Gli analizzatori del linguaggio possono essere richiamati durante l'indicizzazione e l'esecuzione di query e sono Apache Lucene (ad esempio, "de.lucene") o Microsoft ("de.microsoft).
I lessico linguistici richiamati durante il controllo ortografico vengono specificati usando uno dei codici di lingua nella tabella della lingua supportata.
In una richiesta di query il valore assegnato a queryLanguage
si applica a speller
.
Nota
La coerenza del linguaggio tra vari valori delle proprietà è un problema solo se si usano analizzatori del linguaggio. Se si usano analizzatori indipendenti dal linguaggio (ad esempio parole chiave, semplici, standard, stop, spazi vuoti o standardasciifolding.lucene
), il queryLanguage
valore può essere quello desiderato.
Anche se il contenuto in un indice di ricerca può essere composto in più lingue, l'input della query è molto probabile in uno. Il motore di ricerca non verifica la compatibilità di queryLanguage
, l'analizzatore del linguaggio e il linguaggio in cui è composto il contenuto, quindi assicurarsi di definire l'ambito delle query di conseguenza per evitare di produrre risultati non corretti.