OData-functies voor zoeken in volledige tekst in Azure AI Search - search.ismatch
en search.ismatchscoring
Azure AI Search biedt ondersteuning voor zoeken in volledige tekst in de context van OData-filterexpressies via de search.ismatch
en search.ismatchscoring
functies. Met deze functies kunt u zoeken in volledige tekst combineren met strikte Booleaanse filters op manieren die niet alleen mogelijk zijn met behulp van de parameter op het hoogste niveau search
van de Zoek-API.
Notitie
De search.ismatch
functies en search.ismatchscoring
functies worden alleen ondersteund in filters in de Zoek-API. Ze worden niet ondersteund in de API's voorstellen of automatisch aanvullen .
Syntaxis
Het volgende EBNF (Extended Backus-Naur Form) definieert de grammatica van de search.ismatch
en search.ismatchscoring
functies:
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'"
Er is ook een interactief syntaxisdiagram beschikbaar:
Notitie
Zie naslaginformatie over de syntaxis van de OData-expressie voor Azure AI Search voor het volledige EBNF.
search.ismatch
De search.ismatch
functie evalueert een zoekquery in volledige tekst als onderdeel van een filterexpressie. De documenten die overeenkomen met de zoekquery worden geretourneerd in de resultatenset. De volgende overbelastingen van deze functie zijn beschikbaar:
search.ismatch(search)
search.ismatch(search, searchFields)
search.ismatch(search, searchFields, queryType, searchMode)
De parameters worden gedefinieerd in de volgende tabel:
Parameternaam | Type | Description |
---|---|---|
search |
Edm.String |
De zoekquery (in eenvoudige of volledige Lucene-querysyntaxis). |
searchFields |
Edm.String |
Door komma's gescheiden lijst met doorzoekbare velden waarin moet worden gezocht; is standaard ingesteld op alle doorzoekbare velden in de index. Wanneer u in de search parameter een veldzoekopdracht gebruikt, overschrijven de veldaanduidingen in de Lucene-query alle velden die in deze parameter zijn opgegeven. |
queryType |
Edm.String |
'simple' of 'full' ; is standaard ingesteld op 'simple' . Hiermee geeft u op welke querytaal is gebruikt in de search parameter. |
searchMode |
Edm.String |
'any' of 'all' , wordt standaard ingesteld op 'any' . Geeft aan of een of alle zoektermen in de search parameter moeten worden vergeleken om het document als overeenkomst te tellen. Wanneer u de Lucene-booleaanse operatoren in de search parameter gebruikt, hebben ze voorrang op deze parameter. |
Alle bovenstaande parameters zijn gelijk aan de bijbehorende parameters voor zoekaanvragen in de Zoek-API.
De search.ismatch
functie retourneert een waarde van het type Edm.Boolean
, waarmee u deze kunt opstellen met andere filtersubexpressies met behulp van de booleaanse logische operators.
Notitie
Azure AI Search biedt geen ondersteuning voor het gebruik of search.ismatch
search.ismatchscoring
binnen lambda-expressies. Dit betekent dat het niet mogelijk is om filters te schrijven over verzamelingen objecten die overeenkomen met zoekovereenkomsten in volledige tekst met strikte filterovereenkomsten op hetzelfde object. Zie Problemen met verzamelingsfilters in Azure AI Search oplossen voor meer informatie over deze beperking en voorbeelden. Zie Informatie over verzamelingsfilters in Azure AI Search voor meer gedetailleerde informatie over waarom deze beperking bestaat.
search.ismatchscoring
De search.ismatchscoring
functie retourneerttrue
, net als de search.ismatch
functie, voor documenten die overeenkomen met de zoekquery voor volledige tekst die als parameter is doorgegeven. Het verschil tussen deze documenten is dat de relevantiescore van documenten die overeenkomen met de search.ismatchscoring
query bijdraagt aan de algehele documentscore, terwijl in het geval van search.ismatch
de documentscore niet wordt gewijzigd. De volgende overbelastingen van deze functie zijn beschikbaar met parameters die identiek zijn aan die van search.ismatch
:
search.ismatchscoring(search)
search.ismatchscoring(search, searchFields)
search.ismatchscoring(search, searchFields, queryType, searchMode)
Zowel de als search.ismatchscoring
de search.ismatch
functies kunnen worden gebruikt in dezelfde filterexpressie.
Voorbeelden
Zoek documenten met het woord 'waterkant'. Deze filterquery is identiek aan een zoekaanvraag met search=waterfront
.
search.ismatchscoring('waterfront')
Zoek documenten met het woord "hostel" en classificatie groter of gelijk aan 4, of documenten met het woord "motel" en classificatie gelijk aan 5. Opmerking: deze aanvraag kan niet worden uitgedrukt zonder de search.ismatchscoring
functie.
search.ismatchscoring('hostel') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 5
Zoek documenten zonder het woord 'luxe'.
not search.ismatch('luxury')
Zoek documenten met de woordgroep 'oceaanweergave' of classificatie die gelijk is aan 5. De search.ismatchscoring
query wordt alleen uitgevoerd op velden HotelName
en Rooms/Description
.
Documenten die alleen overeenkomen met de tweede component van de disjunction, worden ook geretourneerd -- hotels met Rating
gelijk aan 5. Om duidelijk te maken dat deze documenten niet overeenkomen met een van de gescoorde delen van de expressie, worden ze geretourneerd met een score die gelijk is aan nul.
search.ismatchscoring('"ocean view"', 'Rooms/Description,HotelName') or Rating eq 5
Zoek documenten waar de termen "hotel" en "airport" binnen 5 woorden van elkaar liggen in de beschrijving van het hotel, en waar roken niet is toegestaan in ten minste een deel van de kamers. Deze query maakt gebruik van de volledige Lucene-querytaal.
search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)
Zoek documenten met een woord dat begint met de letters 'lux' in het veld Beschrijving. Deze query maakt gebruik van voorvoegselzoekopdrachten in combinatie met search.ismatch
.
search.ismatch('lux*', 'Description')