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 e queryLanguage impostata su un linguaggio supportato. Il controllo ortografico funziona sulle stringhe passate nel search 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

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.

Passaggi successivi