Query's uitvoeren in Azure AI Search
Azure AI Search biedt ondersteuning voor queryconstructies voor een breed scala aan scenario's, van zoeken in vrije tekst tot zeer opgegeven querypatronen, tot vectorzoekopdrachten. Alle query's worden uitgevoerd via een zoekindex waarin doorzoekbare inhoud wordt opgeslagen.
Typen query's
Queryformulier | Doorzoekbare inhoud | Beschrijving |
---|---|---|
zoeken in volledige tekst | Omgekeerde indexen van tokenized termen. | Query's in volledige tekst herhalen over omgekeerde indexen die zijn gestructureerd voor snelle scans, waarbij een overeenkomst kan worden gevonden in mogelijk elk veld, binnen een willekeurig aantal zoekdocumenten. Tekst wordt geanalyseerd en getokeniseerd voor zoeken in volledige tekst. |
Vector zoeken | Vectorindexen van gegenereerde insluitingen. | Vectorquery's herhalen over vectorvelden in een zoekindex. |
Hybride zoekopdracht | Al het bovenstaande, in één zoekindex. | Combineert tekstzoekopdrachten en vectorzoekopdrachten in één queryaanvraag. Tekst zoeken werkt op tekst zonder opmaak in velden 'doorzoekbaar' en 'filterbaar'. Vectorzoekopdrachten werken met inhoud in vectorvelden. |
Overigen | Tekst zonder opmaak en alfanumerieke inhoud. | Onbewerkte inhoud, geëxtraheerde exacte bewoordingen uit brondocumenten, ondersteunende filters en patroonkoppelingsquery's zoals geo-ruimtelijke zoekopdrachten, fuzzy zoekopdrachten en zoeken in velden. |
In dit artikel wordt de focus verplaatst naar de laatste categorie: query's die werken op tekst zonder opmaak en alfanumerieke inhoud, die intact zijn geëxtraheerd uit de oorspronkelijke bron, worden gebruikt voor filters en andere gespecialiseerde queryformulieren.
Automatisch aanvullen en voorgestelde query's
Automatisch aanvullen of voorgestelde resultaten zijn alternatieven voor search
het activeren van opeenvolgende queryaanvragen op basis van gedeeltelijke tekenreeksinvoer (na elk teken) in een zoek-naar-u-type-ervaring. U kunt deze samen of afzonderlijk gebruikenautocomplete
, zoals beschreven in dit scenario, maar u kunt ze niet gebruiken met search
.suggestions
Zowel voltooide termen als voorgestelde query's zijn afgeleid van de indexinhoud. De engine retourneert nooit een tekenreeks of suggestie die niet bestaat in uw index. Zie Automatisch aanvullen (REST API) en Suggesties (REST API) voor meer informatie.
Zoekactie filteren
Filters worden veel gebruikt in apps die zijn gebaseerd op Azure AI Search. Op toepassingspagina's worden filters vaak gevisualiseerd als facetten in koppelingsnavigatiestructuren voor door de gebruiker gerichte filters. Filters worden ook intern gebruikt om segmenten van geïndexeerde inhoud beschikbaar te maken. U kunt bijvoorbeeld een zoekpagina initialiseren met behulp van een filter op een productcategorie of een taal als een index velden in zowel het Engels als het Frans bevat.
Mogelijk hebt u filters nodig om een speciaal queryformulier aan te roepen, zoals beschreven in de volgende tabel. U kunt een filter gebruiken met een niet-opgegeven zoekopdracht (search=*
) of met een querytekenreeks die termen, woordgroepen, operators en patronen bevat.
Filterscenario | Beschrijving |
---|---|
Bereikfilters | In Azure AI Search worden bereikquery's gemaakt met behulp van de filterparameter. Zie het voorbeeld van het bereikfilter voor meer informatie en voorbeelden. |
Facetnavigatie | In de facetnavigatiestructuur kunnen gebruikers facetten selecteren. Wanneer u wordt ondersteund door filters, beperken zoekresultaten zich bij elke klik. Elk facet wordt ondersteund door een filter dat documenten uitsluit die niet meer voldoen aan de criteria van het facet. |
Notitie
Tekst die in een filterexpressie wordt gebruikt, wordt niet geanalyseerd tijdens het verwerken van query's. De tekstinvoer wordt verondersteld een hoofdlettergevoelig tekenpatroon te zijn dat slaagt of mislukt bij de overeenkomst. Filterexpressies worden samengesteld met behulp van OData-syntaxis en doorgegeven in een filter
parameter in alle filterbare velden in uw index. Zie Filters in Azure AI Search voor meer informatie.
Georuimtelijke zoekopdracht
Georuimtelijke zoekovereenkomsten op de breedte- en lengtegraadcoördinaten van een locatie voor zoeken in de buurt of op kaarten gebaseerde zoekervaring. In Azure AI Search kunt u georuimtelijke zoekopdrachten implementeren door de volgende stappen uit te voeren:
- Definieer een filterbaar veld van een van deze typen: Edm.GeographyPoint, Collection(Edm.GeographyPoint, Edm.GeographyPolygon).
- Controleer of de binnenkomende documenten de juiste coördinaten bevatten.
- Nadat het indexeren is voltooid, maakt u een query die gebruikmaakt van een filter en een georuimtelijke functie.
Georuimtelijke zoekopdracht maakt gebruik van kilometers voor afstand. Coördinaten worden opgegeven in deze indeling: (longitude, latitude
).
Hier volgt een voorbeeld van een filter voor georuimtelijke zoekopdrachten. Met dit filter worden andere Location
velden gevonden in de zoekindex met coördinaten binnen een radius van 300 kilometer van het geografische punt (in dit voorbeeld Washington D.C.). Het retourneert adresgegevens in het resultaat en bevat een optionele facets
component voor zelfnavigatie op basis van locatie.
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
}
Zie het georuimtelijke zoekvoorbeeld voor meer informatie en voorbeelden.
Document opzoeken
In tegenstelling tot de eerder beschreven queryformulieren haalt deze één zoekdocument op id op, zonder bijbehorende indexzoekopdracht of scan. Er wordt slechts één document aangevraagd en geretourneerd. Wanneer een gebruiker een item in zoekresultaten selecteert, wordt het document opgehaald en een detailpagina met velden ingevuld. Een documentzoekactie is de bewerking die dit ondersteunt.
Geavanceerd zoeken: fuzzy, jokerteken, nabijheid, regex
Een geavanceerd queryformulier is afhankelijk van de full Lucene-parser en operators die een specifiek querygedrag activeren.
Querytype | Gebruik | Voorbeelden en meer informatie |
---|---|---|
Zoeken in velden | search parameter queryType=full |
Bouw een samengestelde query-expressie die gericht is op één veld. Voorbeeld van zoeken in velden |
fuzzy zoekopdracht | search parameter queryType=full |
Komt overeen met termen met een vergelijkbare constructie of spelling. Voorbeeld van fuzzy zoekopdracht |
nabijheid zoeken | search parameter queryType=full |
Hiermee vindt u termen die zich in de buurt van elkaar in een document bevinden. Voorbeeld van nabijheidszoekopdracht |
termverhoging | search parameter queryType=full |
Rangschikt een document hoger als het de boosted term bevat, ten opzichte van anderen die dat niet doen. Voorbeeld van het stimuleren van termen |
reguliere zoekfunctie voor expressies | search parameter queryType=full |
Komt overeen op basis van de inhoud van een reguliere expressie. Voorbeeld van reguliere expressie |
Jokertekens of voorvoegsel zoeken | search parameter met *~ of ? , queryType=full |
Komt overeen op basis van een voorvoegsel en tilde (~ ) of één teken (? ). Voorbeeld van zoeken met jokertekens |
Volgende stappen
Bekijk de voorbeelden voor elke syntaxis voor een beter overzicht van de implementatie van query's. Als u geen idee hebt van zoeken in volledige tekst, kunt u beter bekijken wat de query-engine doet.