Funzioni di ricerca full-text OData in Ricerca di intelligenza artificiale di Azure e search.ismatch
search.ismatchscoring
Ricerca di intelligenza artificiale di Azure supporta la ricerca full-text nel contesto delle espressioni di filtro OData tramite le search.ismatch
funzioni e search.ismatchscoring
. Queste funzioni consentono di combinare la ricerca full-text con un filtro booleano rigoroso in modi che non sono possibili solo usando il parametro di primo livello search
dell'API di ricerca.
Nota
Le search.ismatch
funzioni e search.ismatchscoring
sono supportate solo nei filtri nell'API di ricerca. Non sono supportati nelle API Di suggerimento o completamento automatico .
Sintassi
Il seguente EBNF (Extended Backus-Naur Form) definisce la grammatica delle search.ismatch
funzioni e search.ismatchscoring
:
search_is_match_call ::=
'search.ismatch'('scoring')?'(' search_is_match_parameters ')'
search_is_match_parameters ::=
string_literal(',' string_literal(',' query_type ',' search_mode)?)?
query_type ::= "'full'" | "'simple'"
search_mode ::= "'any'" | "'all'"
È disponibile anche un diagramma di sintassi interattivo:
Nota
Vedere Informazioni di riferimento sulla sintassi delle espressioni OData per Azure AI Search per l'EBNF completo.
search.ismatch
La search.ismatch
funzione valuta una query di ricerca full-text come parte di un'espressione di filtro. I documenti che corrispondono alla query di ricerca verranno restituiti nel set di risultati. Sono disponibili gli overload seguenti di questa funzione:
search.ismatch(search)
search.ismatch(search, searchFields)
search.ismatch(search, searchFields, queryType, searchMode)
I parametri sono definiti nella tabella seguente:
Nome parametro | Tipo | Descrizione |
---|---|---|
search |
Edm.String |
Query di ricerca (nella sintassi di query Lucene semplice o completa ). |
searchFields |
Edm.String |
Elenco delimitato da virgole di campi ricercabili in cui eseguire la ricerca; per impostazione predefinita, tutti i campi ricercabili nell'indice. Quando si usa la search ricerca campiata nel parametro , gli identificatori di campo nella query Lucene eseguono l'override di tutti i campi specificati in questo parametro. |
queryType |
Edm.String |
'simple' oppure 'full' ; l'impostazione predefinita è 'simple' . Specifica il linguaggio di query usato nel parametro search . |
searchMode |
Edm.String |
'any' o 'all' , per impostazione predefinita è 'any' . Indica se i termini di ricerca nel search parametro devono corrispondere a uno o tutti i termini di ricerca per contare il documento come corrispondenza. Quando si usano gli operatori booleani Lucene nel search parametro , avranno la precedenza su questo parametro. |
Tutti i parametri precedenti sono equivalenti ai parametri di richiesta di ricerca corrispondenti nell'API di ricerca.
La search.ismatch
funzione restituisce un valore di tipo Edm.Boolean
, che consente di componerlo con altre espressioni secondarie di filtro usando gli operatori logici booleani.
Nota
Ricerca di intelligenza artificiale di Azure non supporta l'uso search.ismatch
o search.ismatchscoring
l'interno di espressioni lambda. Ciò significa che non è possibile scrivere filtri su raccolte di oggetti che possono correlare le corrispondenze di ricerca full-text con corrispondenze di filtro rigorose sullo stesso oggetto. Per altri dettagli su questa limitazione, oltre ad esempi, vedere Risoluzione dei problemi relativi ai filtri di raccolta in Ricerca di intelligenza artificiale di Azure. Per informazioni più approfondite sul motivo per cui questa limitazione esiste, vedere Informazioni sui filtri di raccolta in Ricerca di intelligenza artificiale di Azure.
search.ismatchscoring
La search.ismatchscoring
funzione, come la search.ismatch
funzione , restituisce true
per i documenti che corrispondono alla query di ricerca full-text passata come parametro. La differenza tra di esse è che il punteggio di pertinenza dei documenti corrispondenti alla query search.ismatchscoring
contribuirà al punteggio complessivo dei documenti, mentre nel caso di search.ismatch
, il punteggio dei documenti non verrà modificato. Sono disponibili gli overload seguenti di questa funzione con parametri identici a quelli di search.ismatch
:
search.ismatchscoring(search)
search.ismatchscoring(search, searchFields)
search.ismatchscoring(search, searchFields, queryType, searchMode)
Entrambe le search.ismatch
funzioni e search.ismatchscoring
possono essere usate nella stessa espressione di filtro.
Esempi
Trovare documenti con la parola "waterfront". Questa query di filtro è identica a una richiesta di ricerca con search=waterfront
.
search.ismatchscoring('waterfront')
Trovare i documenti con la parola "hostel" e classificazione 4 o superiore oppure i documenti con la parola "motel" e classificazione 5. Si noti che questa richiesta non potrebbe essere espressa senza la funzione search.ismatchscoring
.
search.ismatchscoring('hostel') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 5
Trovare i documenti senza la parola "luxury".
not search.ismatch('luxury')
Trovare i documenti con la frase "ocean view" o classificazione 5. La query search.ismatchscoring
verrà eseguita solo sui campi HotelName
e Rooms/Description
.
I documenti che corrispondono solo alla seconda clausola della disgiunzione verranno restituiti anche - hotel con Rating
uguale a 5. Per chiarire che tali documenti non corrispondono ad alcuna delle parti con punteggio dell'espressione, verranno restituite con un punteggio uguale a zero.
search.ismatchscoring('"ocean view"', 'Rooms/Description,HotelName') or Rating eq 5
Trova i documenti in cui i termini "hotel" e "aeroporto" sono entro 5 parole l'uno dall'altro nella descrizione dell'hotel, e dove non è consentito fumare in almeno alcune delle camere. Questa query usa il linguaggio di query Lucene completo.
search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)
Trovare documenti con una parola che inizia con le lettere "lux" nel campo Descrizione. Questa query usa la ricerca del prefisso in combinazione con search.ismatch
.
search.ismatch('lux*', 'Description')