Köra frågor i Azure AI Search
Azure AI Search stöder frågekonstruktioner för ett brett spektrum av scenarier, från textsökning i fritt format till högt angivna frågemönster till vektorsökning. Alla frågor körs över ett sökindex som lagrar sökbart innehåll.
Typer av frågor
Frågeformulär | Sökbart innehåll | beskrivning |
---|---|---|
fulltextsökning | Inverterade index för tokeniserade termer. | Fulltextfrågor itererar över inverterade index som är strukturerade för snabba genomsökningar, där en matchning kan hittas i potentiellt valfritt fält, inom valfritt antal sökdokument. Text analyseras och tokeniseras för fulltextsökning. |
Vektorsökning | Vektorindex för genererade inbäddningar. | Vektorfrågor itererar över vektorfält i ett sökindex. |
Hybridsökning | Allt ovanstående, i ett enda sökindex. | Kombinerar textsökning och vektorsökning i en enda frågebegäran. Textsökning fungerar på oformaterad text i fälten "sökbar" och "filterbar". Vektorsökning fungerar på innehåll i vektorfält. |
Andra | Oformaterad text och läsbart innehåll. | Råinnehåll, extraherat ordagrant från källdokument, stödfilter och mönstermatchningsfrågor som geo-spatial sökning, fuzzy-sökning och fältsökning. |
Den här artikeln fokuserar på den sista kategorin: frågor som fungerar med oformaterad text och mänskligt läsbart innehåll, extraherade intakta från den ursprungliga källan, som används för filter och andra specialiserade frågeformulär.
Komplettera automatiskt och föreslagna frågor
Automatisk komplettering eller föreslagna resultat är alternativ till search
att utlösa efterföljande frågebegäranden baserat på partiella strängindata (efter varje tecken) i en sök-som-du-typ-upplevelse. Du kan använda autocomplete
och suggestions
parametern tillsammans eller separat, enligt beskrivningen i den här genomgången, men du kan inte använda dem med search
. Både slutförda termer och föreslagna frågor härleds från indexinnehållet. Motorn returnerar aldrig en sträng eller ett förslag som inte finns i indexet. Mer information finns i Komplettera automatiskt (REST API) och Förslag (REST API).
Filtrera sökning
Filter används ofta i appar som baseras på Azure AI Search. På programsidor visualiseras filter ofta som fasetter i länknavigeringsstrukturer för användarstyrd filtrering. Filter används också internt för att exponera segment av indexerat innehåll. Du kan till exempel initiera en söksida med hjälp av ett filter för en produktkategori eller ett språk om ett index innehåller fält på både engelska och franska.
Du kan också behöva filter för att anropa ett specialiserat frågeformulär enligt beskrivningen i följande tabell. Du kan använda ett filter med en ospecificerad sökning (search=*
) eller med en frågesträng som innehåller termer, fraser, operatorer och mönster.
Filterscenario | beskrivning |
---|---|
Intervallfilter | I Azure AI Search skapas intervallfrågor med filterparametern. Mer information och exempel finns i Exempel på intervallfilter. |
Aspektbaserad navigering | I fasetterat navigeringsträd kan användarna välja fasetter. När du backas upp av filter begränsas sökresultaten vid varje klick. Varje aspekt backas upp av ett filter som exkluderar dokument som inte längre matchar kriterierna som tillhandahålls av aspekten. |
Kommentar
Text som används i ett filteruttryck analyseras inte under frågebearbetningen. Textinmatningen antas vara ett ordagrant skiftlägeskänsligt teckenmönster som antingen lyckas eller misslyckas med matchningen. Filteruttryck konstrueras med OData-syntax och skickas i en filter
parameter i alla filterbara fält i ditt index. Mer information finns i Filter i Azure AI Search.
Geospatial sökning
Geospatial sökning matchar på en plats latitud- och longitudkoordinater för "hitta nära mig" eller kartbaserad sökupplevelse. I Azure AI Search kan du implementera geospatial sökning genom att följa dessa steg:
- Definiera ett filterbart fält av någon av dessa typer: Edm.GeographyPoint, Collection(Edm.GeographyPoint, Edm.GeographyPolygon).
- Kontrollera att de inkommande dokumenten innehåller lämpliga koordinater.
- När indexeringen är klar skapar du en fråga som använder ett filter och en geo-spatial funktion.
Geospatial sökning använder kilometer för avstånd. Koordinater anges i det här formatet: (longitude, latitude
).
Här är ett exempel på ett filter för geospatial sökning. Det här filtret hittar andra Location
fält i sökindexet som har koordinater inom en radie på 300 kilometer från geografipunkten (i det här exemplet Washington D.C.). Den returnerar adressinformation i resultatet och innehåller en valfri facets
sats för självnavigering baserat på plats.
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
}
Mer information och exempel finns i Exempel på geospatial sökning.
Dokumentsökning
I motsats till de tidigare beskrivna frågeformulären hämtar den här ett enda sökdokument efter ID, utan motsvarande indexsökning eller genomsökning. Endast ett dokument begärs och returneras. När en användare väljer ett objekt i sökresultat är det ett typiskt svar att hämta dokumentet och fylla i en informationssida med fält, och en dokumentsökning är den åtgärd som stöder det.
Avancerad sökning: fuzzy, jokertecken, närhet, regex
Ett avancerat frågeformulär beror på den fullständiga Lucene-parsaren och operatorerna som utlöser ett specifikt frågebeteende.
Frågetyp | Förbrukning | Exempel och mer information |
---|---|---|
Fältsökning | search parameter queryType=full |
Skapa ett sammansatt frågeuttryck som riktar sig till ett enda fält. Exempel på fältsökning |
fuzzy-sökning | search parameter queryType=full |
Matchar på villkor som har en liknande konstruktion eller stavning. Fuzzy-sökexempel |
närhetssökning | search parameter queryType=full |
Hittar termer som är nära varandra i ett dokument. Exempel på närhetssökning |
termstär | search parameter queryType=full |
Rangordnar ett dokument högre om det innehåller den boostade termen i förhållande till andra som inte gör det. Exempel på termstädning |
sökning efter reguljära uttryck | search parameter queryType=full |
Matchar baserat på innehållet i ett reguljärt uttryck. Exempel på reguljära uttryck |
jokertecken eller prefixsökning | search parameter med *~ eller ? , queryType=full |
Matchar baserat på ett prefix och tilde (~ ) eller ett enda tecken (? ). Sökexempel för jokertecken |
Nästa steg
En närmare titt på frågeimplementeringen finns i exemplen för varje syntax. Om du är nybörjare på fulltextsökning kan en närmare titt på vad frågemotorn gör vara ett lika bra val.