Delen via


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:

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

Volgende stappen