Esecuzione di query in Azure AI Search
Azure AI Search supporta costrutti di query per un'ampia gamma di scenari, dalla ricerca di testo in formato libero, ai modelli di query altamente specificati, alla ricerca vettoriale. Tutte le query vengono eseguite su un indice di ricerca che archivia il contenuto ricercabile.
Tipi di query
Modulo query | Contenuto ricercabile | Descrizione |
---|---|---|
ricerca full-text | Indici invertiti dei termini con token. | Le query full-text eseguono l'iterazione sugli indici invertiti strutturati per le analisi veloci, in cui è possibile trovare una corrispondenza in qualsiasi campo, all'interno di un numero qualsiasi di documenti di ricerca. Il testo viene analizzato e tokenizzato per la ricerca full-text. |
Ricerca vettoriale | Indici vettoriali di incorporamenti generati. | Le query vettoriali eseguono l'iterazione sui campi vettoriali in un indice di ricerca. |
Ricerca ibrida | Tutte le operazioni precedenti, in un singolo indice di ricerca. | Combina la ricerca di testo e la ricerca vettoriale in una singola richiesta di query. La ricerca di testo funziona sul contenuto di testo normale nei campi "ricercabili" e "filtrabili". La ricerca vettoriale funziona sul contenuto nei campi vettoriali. |
Altri | Testo normale e contenuto leggibile. | Contenuto non elaborato, verbatim estratto dai documenti di origine, filtri di supporto e query di ricerca di criteri come la ricerca geospaziali, la ricerca fuzzy e la ricerca in campi. |
Questo articolo illustra l'ultima categoria: query che funzionano su testo normale e contenuto leggibile, estratte intatte dall'origine originale, usate per filtri e altri moduli di query specializzati.
Completamento automatico e query suggerite
Il completamento automatico o i risultati suggeriti sono alternative a search
che generano richieste di query successive in base a input di stringa parziali (dopo ogni carattere) in un'esperienza search-as-you-type. È possibile usare i parametri autocomplete
e suggestions
insieme o separatamente, come descritto in questa procedura dettagliata, ma non è possibile usarli con search
. Sia i termini completati che le query suggerite derivano dal contenuto dell'indice. Il motore non restituisce mai una stringa o un suggerimento inesistente nell'indice. Per altre informazioni, vedere Completamento automatico (API REST) e Suggerimenti (API REST).
Ricerca per filtro
I filtri sono ampiamente usati nelle app basate su Azure AI Search. Nelle pagine dell'applicazione i filtri vengono spesso visualizzati come facet nelle strutture di spostamento dei collegamenti per il filtro diretto dall'utente. I filtri vengono usati internamente anche per esporre sezioni di contenuto indicizzato. Ad esempio, è possibile inizializzare una pagina di ricerca usando un filtro per una categoria di prodotti o una lingua, se un indice contiene campi sia in inglese che in francese.
Potrebbe anche essere necessario filtrare per richiamare un modulo di query specializzato, come descritto nella tabella seguente. È possibile usare un filtro con una ricerca non specificata (search=*
) o con una stringa di query che include termini, frasi, operatori e modelli.
Scenario di filtro | Descrizione |
---|---|
Filtri di intervallo | In Azure AI Search, le query di intervallo vengono create usando il parametro di filtro. Per altre informazioni ed esempi, vedere Esempio di filtro intervallo. |
Esplorazione in base a facet | In esplorazione in base a facet, gli utenti possono selezionare facet. Se supportato da filtri, i risultati della ricerca si restringono a ogni clic. Ogni facet è supportato da un filtro che esclude i documenti che non soddisfano più i criteri forniti dal facet. |
Nota
Il testo usato in un'espressione di filtro non viene analizzato durante l'elaborazione delle query. Si presuppone che l'input di testo sia un modello di caratteri con distinzione tra maiuscole e minuscole verbatim che ha esito positivo o negativo nella corrispondenza. Le espressioni di filtro vengono costruite usando la sintassi OData e passate in un parametro filter
in tutti i campi filtrabili nell'indice. Per altre informazioni, vedere Filtri in Azure AI Search.
Ricerca geospaziale
La ricerca geospaziale corrisponde alle coordinate di latitudine e longitudine di una posizione per l'esperienza di ricerca "trova vicino a me" o basata su mappa. In Azure AI Search, è possibile implementare la ricerca geospaziale seguendo questa procedura:
- Definire un campo filtrabile di uno di questi tipi: Edm.GeographyPoint, Collection(Edm.GeographyPoint, Edm.GeographyPolygon).
- Verificare che i documenti in ingresso includano le coordinate appropriate.
- Al termine dell'indicizzazione, compilare una query che usa un filtro e una funzione spaziale geografica.
La ricerca geospaziale usa chilometri per la distanza. Le coordinate sono specificate in questo formato: (longitude, latitude
).
Ecco un esempio di filtro per la ricerca geospaziale. Questo filtro trova altri campi Location
nell'indice di ricerca con coordinate all'interno di un raggio di 300 chilometri del punto geografico (in questo esempio Washington D.C.). Restituisce le informazioni sull'indirizzo nel risultato e include una clausola facoltativa facets
per la navigazione automatica in base alla posizione.
POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2024-07-01
{
"count": true,
"search": "*",
"filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
"facets": [ "Address/StateProvince"],
"select": "HotelId, HotelName, Address/StreetAddress, Address/City, Address/StateProvince",
"top": 7
}
Per altre informazioni ed esempi, vedere Esempio di ricerca geospaziale.
Ricerca documento
A differenza dei moduli di query descritti in precedenza, questo recupera un singolo documento di ricerca in base all'ID, senza ricerca o analisi dell'indice corrispondente. Viene richiesto e restituito solo il documento. Quando un utente seleziona un elemento nei risultati della ricerca, il recupero del documento e il popolamento di una pagina dei dettagli con campi è una risposta tipica e la ricerca di un documento è l'operazione che lo supporta.
Ricerca avanzata: fuzzy, carattere jolly, prossimità, regex
Un modulo di query avanzato dipende dal parser Lucene completo e dagli operatori che attivano un comportamento di query specifico.
Tipo di query | Utilizzo | Esempi e ulteriori informazioni |
---|---|---|
Ricerca con campi | search parameter,queryType=full |
Compilare un'espressione di query composta destinata a un singolo campo. Esempio di ricerca con campi |
ricerca fuzzy | search parameter,queryType=full |
Corrispondenze in base alle esigenze di ortografia o di costruzione simile. Esempio di ricerca fuzzy |
ricerca di prossimità | search parameter,queryType=full |
Trova i termini vicini tra loro in un documento. Esempio di ricerca per prossimità |
aumento priorità termini | search parameter,queryType=full |
Classifica un documento superiore se contiene il termine con boosting, rispetto alle altre che non lo contengono. Esempio di aumento della priorità dei termini |
ricerca basata su espressioni regolari | search parameter,queryType=full |
Corrispondenze in base al contenuto di un'espressione regolare. Esempio di espressione regolare |
ricerca con caratteri jolly o prefisso | search parametro con *~ o ? , queryType=full |
Corrispondenze basate su un prefisso e una tilde (~ ) o un singolo carattere (? ). Esempio di ricerca con caratteri jolly |
Passaggi successivi
Per un'analisi più dettagliata dell'implementazione delle query, vedere gli esempi per ogni sintassi. Se non si ha familiarità con la ricerca full-text, è possibile che il motore di query faccia altrettanto bene.