Skapa en fullständig textfråga i Azure AI Search
Om du skapar en fråga för fulltextsökning innehåller den här artikeln steg för att konfigurera begäran. Den introducerar också en frågestruktur och förklarar hur fältattribut och språkanalysverktyg kan påverka frågeresultat.
Förutsättningar
Ett sökindex med strängfält som tilldelas som sökbara.
Läsbehörigheter för sökindexet. För läsåtkomst inkluderar du en fråge-API-nyckel i begäran eller ger anroparen behörighet för sökindexdataläsare .
Exempel på en frågebegäran i fulltext
I Azure AI Search är en fråga en skrivskyddad begäran mot dokumentsamlingen för ett enda sökindex, med parametrar som både informerar frågekörningen och formar svaret som kommer tillbaka.
En fullständig textfråga anges i en search
parameter och består av termer, citattecken och operatorer. Andra parametrar lägger till mer definition i begäran.
Följande REST API-anrop för Sök EFTER illustrerar en frågebegäran med hjälp av de nämnda parametrarna.
POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-07-01
{
"search": "NY +view",
"queryType": "simple",
"searchMode": "all",
"searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"top": 10,
"count": true
}
Huvudpunkter
search
tillhandahåller matchningskriterierna, vanligtvis hela termer eller fraser, med eller utan operatorer. Alla fält som tilldelas som sökbara i indexschemat är en kandidat för den här parametern.queryType
anger parsern: enkel, full. Standardvärdet för enkel frågeparser är optimalt för fulltextsökning. Den fullständiga Lucene-frågeparsern är för avancerade frågekonstruktioner som reguljära uttryck, närhetssökning, fuzzy- och jokerteckensökning. Den här parametern kan också anges till semantisk för semantisk rangordning för avancerad semantisk modellering i frågesvaret.searchMode
anger om matchningar baseras på alla kriterier (gynnar precision) eller kriterier (gynnar återkallande) i uttrycket. Standardinställningen är alla. Om du förväntar dig stor användning av booleska operatorer, vilket är mer troligt i index som innehåller stora textblock (ett innehållsfält eller långa beskrivningar), bör du testa frågor med parameternsearchMode=Any|All
för att utvärdera effekten av den inställningen på boolesk sökning.searchFields
begränsar frågekörningen till specifika sökbara fält. Under utvecklingen är det bra att använda samma fältlista för att välja och söka. Annars kan en matchning baseras på fältvärden som du inte kan se i resultatet, vilket skapar osäkerhet om varför dokumentet returnerades.
Parametrar som används för att forma svaret:
select
anger vilka fält som ska returneras i svaret. Endast fält som har markerats som hämtningsbara i indexet kan användas i en select-instruktion.top
returnerar det angivna antalet dokument som matchar bäst. I det här exemplet returneras endast 10 träffar. Du kan använda top och skip (visas inte) för att visa resultatet.count
anger hur många dokument i hela indexet som matchar totalt sett, vilket kan vara mer än vad som returneras.orderby
används om du vill sortera resultat efter ett värde, till exempel en klassificering eller plats. Annars är standardvärdet att använda relevanspoängen för att rangordna resultat. Ett fält måste tillskrivas som sorterbart för att vara en kandidat för den här parametern.
Välj en klient
För tidig utveckling och koncepttestning börjar du med Azure Portal eller en REST-klient. Båda metoderna är interaktiva, användbara för riktad testning och hjälper dig att utvärdera effekterna av olika egenskaper utan att behöva skriva någon kod.
Om du vill anropa sökning inifrån en app använder du klientbiblioteken Azure.Document.Search
i Azure SDK:erna för .NET, Java, JavaScript och Python.
När du öppnar ett index i portalen kan du arbeta med Search Explorer tillsammans med index-JSON-definitionen på flikar sida vid sida för enkel åtkomst till fältattribut. Kontrollera tabellen Fält för att se vilka som är sökbara, sorterbara, filterbara och fasettbara när du testar frågor.
Logga in på Azure Portal och hitta söktjänsten.
I din tjänst väljer du Index och väljer ett index.
Ett index öppnas på fliken Sökutforskaren så att du kan fråga direkt. Växla till JSON-vyn för att ange frågesyntax.
Här är ett frågeuttryck för fulltextsökning som fungerar för exempelindexet Hotels:
{ "search": "pool spa +airport", "queryType": "simple", "searchMode": "any", "searchFields": "Description, Tags", "select": "HotelName, Description, Tags", "top": 10, "count": true }
Följande skärmbild illustrerar frågan och svaret:
Välj en frågetyp: enkel | full
Om frågan är fulltextsökning används en frågeparser för att bearbeta all text som skickas som söktermer och fraser. Azure AI Search erbjuder två frågeparsers.
Den enkla parsern förstår den enkla frågesyntaxen. Den här parsern valdes som standard för dess hastighet och effektivitet i textfrågor i fritt format. Syntaxen stöder vanliga sökoperatorer (AND, OR, NOT) för term- och frassökningar och prefixsökning (
*
som isea*
för Seattle och Seaside). En allmän rekommendation är att prova den enkla parsern först och sedan gå vidare till fullständig parser om programkraven kräver mer kraftfulla frågor.Den fullständiga Lucene-frågesyntaxen, som aktiveras när du lägger till
queryType=full
i begäran, baseras på Apache Lucene Parser.
Fullständig syntax och enkel syntax överlappar i den utsträckning som båda stöder samma prefix och booleska åtgärder, men den fullständiga syntaxen ger fler operatorer. I sin helhet finns det fler operatorer för booleska uttryck och fler operatorer för avancerade frågor som fuzzy-sökning, jokerteckensökning, närhetssökning och reguljära uttryck.
Välj frågemetoder
Sökning är i grunden en användardriven övning, där termer eller fraser samlas in från en sökruta eller från klickhändelser på en sida. I följande tabell sammanfattas de mekanismer som du kan använda för att samla in användarindata, tillsammans med den förväntade sökupplevelsen.
Indata | Upplevelse |
---|---|
Sökmetod | En användare skriver termerna eller fraserna i en sökruta, med eller utan operatorer , och väljer Sök för att skicka begäran. Sökning kan användas med filter på samma begäran, men inte med automatisk komplettering eller förslag. |
Autocomplete-metod | En användare skriver några tecken och frågor initieras när varje nytt tecken har skrivits. Svaret är en slutförd sträng från indexet. Om den angivna strängen är giltig väljer användaren Sök för att skicka frågan till tjänsten. |
Förslagsmetod | Precis som med automatisk komplettering genereras några tecken och inkrementella frågor. Svaret är en listruta med matchande dokument, som vanligtvis representeras av några unika eller beskrivande fält. Om något av valen är giltigt väljer användaren ett och det matchande dokumentet returneras. |
Aspektbaserad navigering | En sida visar klickbara navigeringslänkar eller sökvägar som begränsar sökomfånget. En fasetterad navigeringsstruktur består dynamiskt baserat på en inledande fråga. Om du till exempel search=* vill fylla i ett fasetterat navigeringsträd som består av alla möjliga kategorier. En fasetterad navigeringsstruktur skapas från ett frågesvar, men det är också en mekanism för att uttrycka nästa fråga. n REST API-referens, facets dokumenteras som en frågeparameter för en sökdokumentåtgärd, men den kan användas utan parametern search . |
Filtermetod | Filter används med fasetter för att begränsa resultaten. Du kan också implementera ett filter bakom sidan, till exempel för att initiera sidan med språkspecifika fält. I REST API-referens $filter dokumenteras som en frågeparameter för en sökdokumentåtgärd, men den kan användas utan parametern search . |
Effekten av fältattribut på frågor
Om du är bekant med frågetyper och komposition kanske du kommer ihåg att parametrarna för en frågebegäran är beroende av fältattribut i ett index. Till exempel kan endast fält som markerats som sökbara och hämtningsbara användas i frågor och sökresultat. När du anger parametrarna search
, filter
och orderby
i din begäran bör du kontrollera attributen för att undvika oväntade resultat.
I följande skärmbild av hotellexempelindexet är endast de två sista fälten LastRenovationDate och Rating sorterbara, ett krav för användning i en "$orderby"
enda sats.
Fältattributdefinitioner finns i Skapa index (REST API).
Tokens effekt på frågor
Under indexeringen använder sökmotorn en textanalys på strängar för att maximera potentialen för att hitta en matchning vid frågetillfället. Strängar är som minst gemener, men beroende på analysatorn kan de också genomgå lemmatisering och stoppa ordborttagning. Större strängar eller sammansatta ord delas vanligtvis upp efter blanksteg, bindestreck eller bindestreck och indexeras som separata token.
Den viktigaste punkten är att det du tror att ditt index innehåller, och vad som faktiskt finns i det, kan vara annorlunda. Om frågor inte returnerar förväntade resultat kan du granska de token som skapats av analysatorn via REST-API:et (Analyze Text). Mer information om tokenisering och effekten på frågor finns i Partiell termsökning och mönster med specialtecken.
Relaterat innehåll
Nu när du har en bättre förståelse för hur frågebegäranden fungerar kan du prova följande snabbstarter för praktisk upplevelse.