Skapa frågor i Azure Cognitive Search
Om du skapar en fråga för första gången beskriver den här artikeln metoder och metoder för att konfigurera frågor. Den introducerar också en frågebegäran och förklarar hur fältattribut och språkanalysverktyg kan påverka frågeresultat.
Vad är en frågebegäran?
En fråga är en skrivskyddade begäran mot dokumentsamlingen för ett enda sökindex. Den anger en sökparameter som innehåller frågeuttrycket som består av termer, citattecken omslutna fraser och operatorer.
Ytterligare parametrar för begäran ger mer definition av frågan och svaret. Till exempel anger "searchFields"-omfång frågekörning till specifika fält, "select" vilka fält som returneras i resultat och "count" returnerar antalet matchningar som hittas i indexet.
I följande exempel får du en allmän uppfattning om en frågebegäran genom att visa några av de tillgängliga parametrarna. Mer information om frågesammansättning finns i Frågetyper och sammansättningar och Sök dokument (REST).
POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30
{
"search": "NY +view",
"queryType": "simple",
"searchMode": "all",
"searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"count": "true"
}
Välj en klient
Du behöver ett verktyg som till exempel Azure Portal Postman, eller kod som instantierar en frågeklient med hjälp av API:er. Vi rekommenderar Azure Portal eller REST API:er för tidig utveckling och koncepttestning.
Behörigheter
En frågebegäran kräver läsbehörigheter som beviljas via en API-nyckel som skickas i -huvudet. Alla åtgärder, inklusive frågebegäranden, fungerar under en API-administratörsnyckel, men frågebegäranden kan även använda en API-frågenyckel. Api-frågenycklar rekommenderas starkt. Du kan skapa upp till 50 per tjänst och tilldela olika nycklar till olika program.
I Azure Portal kräver åtkomst till verktyg, guider och objekt medlemskap i rollen Deltagare eller högre i tjänsten.
Använda Azure Portal för att köra frågor mot ett index
Sökutforskaren (portalen) är ett frågegränssnitt i Azure Portal som kör frågor mot index i den underliggande söktjänsten. Internt gör portalen sökdokumentbegäranden, men kan inte anropa Automatisk komplettering, Förslag eller Dokumentsökning.
Du kan välja val av index och REST API version, inklusive förhandsversion. En frågesträng kan använda enkel eller fullständig syntax, med stöd för alla frågeparametrar (filter, select, searchFields och så vidare). När du öppnar ett index i portalen kan du arbeta med Sökutforskaren tillsammans med indexets JSON-definition på flikar sida vid sida för enkel åtkomst till fältattribut. Kontrollera vilka fält som är sökbara, sorterbara, filtrerbara och faserbara när du testar frågor.
Använda en REST-klient
Både Postman och Visual Studio Code (med ett tillägg för Azure Cognitive Search) kan fungera som en frågeklient. Med något av verktygen kan du ansluta till söktjänsten och skicka REST-begäranden (Search Documents). Många självstudier och exempel visar REST-klienter för frågor om indexering.
Börja med någon av de här artiklarna om du vill lära dig mer om varje klient (båda innehåller instruktioner för frågor):
- Skapa ett sökindex med hjälp av REST och Postman
- Kom igång med Visual Studio Code och Azure Cognitive Search
Varje begäran är fristående, så du måste ange slutpunkten, indexnamnet och API-versionen för varje begäran. Andra egenskaper, Content-Type och API-nyckel, skickas i begärandehuvudet. Mer information finns i Sök efter dokument (REST) för hjälp med att utforma frågebegäranden.
Använda en SDK
Azure-COGNITIVE SEARCH implementerar till exempel allmänt tillgängliga funktioner. Därför kan du använda vilken som helst av DEDK:erna för att köra frågor mot ett index. Alla innehåller en SearchClient som har metoder för att interagera med ett index, från att läsa in ett index med sökdokument, till att utforma frågebegäranden.
| Azure SDK | Client | Exempel |
|---|---|---|
| .NET | SearchClient | DotNetHowTo |
| Java | SearchClient | SearchForDynamicDocumentsExample.java |
| JavaScript | SearchClient | Väntande. |
| Python | SearchClient | sample_simple_query.py |
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 Cognitive Search två frågeparser.
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 prefix (
*) sökning (som i "sea*" för Seattle och Seattle och Seattle). En allmän rekommendation är att prova den enkla parsern först och sedan gå vidare till fullständig parser om programkraven kräver kraftfullare frågor.Den fullständiga Lucene-frågesyntaxen, som aktiveras när du lägger till i begäran, baseras
queryType=fullpå Apache Lucene Parser.
Fullständig syntax och enkel syntax överlappar varandra i den utsträckning som båda stöder samma prefix och booleska åtgärder, men den fullständiga syntaxen ger fler operatorer. Det finns fler operatorer för booleska uttryck och fler operatorer för avancerade frågor som fuzzy-sökning, sökning med jokertecken, 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 | Erfarenhet |
|---|---|
| Sökmetod | En användare skriver termer eller fraser i en sökruta med eller utan operatorer och klickar på Sök för att skicka begäran. Sökning kan användas med filter för samma begäran, men inte med automatisk komplettering eller förslag. |
| Metod för automatisk komplettering | 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 klickar användaren på Sök för att skicka frågan till tjänsten. |
| Metod för förslag | Precis som med automatisk komplettering skriver en användare några tecken och inkrementella frågor genereras. Svaret är en listrutan över matchande dokument, som vanligtvis representeras av några unika eller beskrivande fält. Om något av valen är giltiga klickar användaren på ett så returneras det matchande dokumentet. |
| Aspektbaserad navigering | En sida visar klickbara navigeringslänkar eller sökvägar som begränsar sökningens omfattning. En fasetterad navigeringsstruktur består dynamiskt baserat på en inledande fråga. Till exempel för search=* att fylla i ett fasetterat navigeringsträd som består av varje möjlig kategori. En fasettad 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, dokumenteras som en frågeparameter för en facets sökdokument-åtgärd, men den kan användas utan search parametern . |
| 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-referensen dokumenteras som en frågeparameter för en $filter sökdokument-åtgärd, men den kan användas utan search parametern . |
Känna till fältattributen
Om du tidigare har granskat frågetyperoch sammansättning kanske du kommer ihåg att parametrarna i frågebegäran beror på hur fält tilldelas i ett index. Om du till exempel vill använda ett fält i en fråga, ett filter eller en sorteringsordning måste det vara sökbart, filtrerbart och sorterbart. På samma sätt kan endast fält som markerats som hämtningsbara visas i resultat. När du börjar ange parametrarna , och i din begäran måste du kontrollera attributen när du går för search filter att undvika oväntade orderby resultat.
I portalens skärmbild nedan av hotellexempelindexetkan endast de två sista fälten "LastRenovationDate" och "Rating" användas i en "$orderby" enda sats.

En beskrivning av fältattribut finns i Skapa index (REST API).
Känna till dina token
Under indexeringen använder sökmotorn ett analysverktyg för att utföra textanalys på strängar, vilket maximerar risken för matchning vid tidpunkten för frågan. Strängar är som minst gemena, men kan också genomgå lemmatisering och stoppa borttagning av ord. Större strängar eller sammansatta ord delas vanligtvis upp av blanksteg, bindestreck eller bindestreck och indexeras som separata token.
Poängen med att ta bort här är att det du tror att indexet 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 analysera text (REST API). Mer information om tokenisering och hur frågor påverkas finns i Partiell termsökning och mönster med specialtecken.
Nästa steg
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 erfarenhet.