Condividi tramite


Aggiungere il controllo ortografico alle query in Azure AI Search

Importante

La correzione ortografia è disponibile in anteprima pubblica in condizioni supplementari per l'utilizzo. È disponibile tramite il portale di Azure, le API REST di anteprima e le versioni beta delle librerie di SDK di Azure.

È possibile migliorare il richiamo correggendo l’ortografia delle parole di una query prima che raggiungano il motore di ricerca. Il parametro speller è supportato per tutti i tipi di query di testo (non vettoriali).

Prerequisiti

  • Servizio di ricerca al livello Basic o superiore, in qualsiasi area.

  • Indice di ricerca esistente con contenuti in una lingua supportata.

  • Richiesta di query con speller=lexicon e queryLanguage impostati su una lingua supportata. Il controllo ortografico funziona sulle stringhe passate nel parametro search. 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 versioni beta degli SDK di Azure.

Libreria client Versioni
REST API Versioni 2020-06-30 anteprima e successive. È consigliabile usare l'API di anteprima più recente. 2024-05-01-anteprima
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 riportato 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 di Johnson pensato per le famiglie.

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
}

Correzione ortografia nelle query Lucene complete

La correzione ortografica è applicata a 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 con altre.

  • I moduli di query incompatibili che ignorano l'analisi del testo includono: carattere jolly, regex, fuzzy
  • I moduli di query compatibili includono: ricerca per campi, prossimità, boosting dei termini

In questo esempio viene usata la ricerca per campi nel campo Categoria, con la sintassi Lucene completa e un termine di query con errori di ortografia. Includendo il correttore ortografico, l'errore di battitura in "Suiite" viene corretto e la query ha esito positivo.

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
}

Correzione ortografia nella classificazione semantica

Questa query, con errori di battitura in tutti i termini tranne uno, viene sottoposta a correzioni ortografiche in modo che restituisca 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=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
}

Lingue supportate

I valori validi di queryLanguage sono disponibili nella tabella seguente, copiati dall'elenco delle lingue supportate (riferimento 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, quando la classificazione semantica era in anteprima pubblica, anche il parametro queryLanguage veniva usato per la classificazione semantica. La classificazione semantica è ora indipendente dalla lingua.

Considerazioni sull'analizzatore della lingua

Gli indici che hanno contenuti in una lingua diversa dall’inglese spesso usano analizzatori della lingua nei campi non in inglese, per applicare le regole linguistiche della lingua nativa.

Quando si aggiunge il controllo ortografico ai contenuti, che vengono sottoposti anche all'analisi della lingua, è possibile ottenere risultati migliori usando la stessa lingua per ogni passaggio di indicizzazione ed elaborazione delle query. Ad esempio, se il contenuto di un campo è stato indicizzato usando l'analizzatore della lingua "fr.microsoft", anche le query e il controllo ortografico dovrebbero usare un lessico francese o una libreria linguistica di qualche tipo.

Per riepilogare il modo in cui vengono usate le librerie linguistiche in Azure AI Search:

  • Gli analizzatori della lingua possono essere richiamati durante l'indicizzazione e l'esecuzione di query, e sono Apache Lucene (ad esempio, "de.lucene") o Microsoft ("de.microsoft”).

  • I lessici della lingua richiamati durante il controllo ortografico vengono specificati usando uno dei codici lingua della tabella con le lingue supportate.

In una richiesta di query il valore assegnato a queryLanguage si applica a speller.

Nota

La coerenza linguistica nei diversi valori delle proprietà è un problema solo se si usano analizzatori della lingua. Se si usano analizzatori indipendenti dalla lingua (ad esempio keyword, simple, standard, stop, whitespace, or standardasciifolding.lucene), il valore queryLanguage può essere quello desiderato.

Anche se il contenuto di un indice di ricerca può essere composto da più lingue, l'input della query probabilmente sarà in una sola. Il motore di ricerca non verifica la compatibilità di queryLanguage, l'analizzatore della lingua e la lingua nella quale è composto il contenuto, quindi assicurarsi di definire di conseguenza l'ambito della query per evitare di produrre risultati non corretti.

Passaggi successivi