Funzioni di ricerca full-text OData in Ricerca di intelligenza artificiale di Azure e search.ismatchsearch.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:

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')

Passaggi successivi