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):

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=full på 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.

Indexdefinition för hotellexempel

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.