Köra frågor i Azure Cognitive Search

Azure Cognitive Search ett omfattande frågespråk som stöder en mängd olika scenarier, från fritextsökning till mycket angivna frågemönster. Den här artikeln beskriver frågebegäranden och vilka typer av frågor du kan skapa.

I Cognitive Search är en fråga en fullständig specifikation av en tur och retur-åtgärd, med parametrar som både informerar frågekörningen och formar svaret som search kommer tillbaka. Parametrar och parser avgör typen av frågebegäran. Följande frågeexempel är en fritextfråga med en boolesk operator med hjälp av samlingen Search Documents (REST API), som riktar in sig på samlingen hotels-sample-index documents.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30
{
    "queryType": "simple",
    "searchMode": "all",
    "search": "restaurant +view",
    "searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
    "select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
    "top": "10",
    "count": "true",
    "orderby": "Rating desc"
}

Parametrar som används vid frågekörning är:

  • queryType anger parsern, som antingen är den enkla standardfrågeparsern (optimal för fulltextsökning) eller den fullständiga Lucene-frågeparser som används för avancerade frågekonstruktioner som reguljära uttryck, närhetssökning, fuzzy- och jokerteckensökning för att nämna några.

  • searchMode anger om matchningar baseras på "alla"-kriterier eller "alla"-kriterier i uttrycket. Standardvärdet är any.

  • search innehåller matchningskriterierna, vanligtvis hela termer eller fraser, med eller utan operatorer. Alla fält som tilldelas som sökbara i indexschemat kan användas för den här parametern.

  • 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 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 visar hur många dokument i hela indexet som matchar totalt, vilket kan vara mer än vad som returneras.

  • orderby används om du vill sortera resultat efter ett värde, till exempel ett omdöme eller en plats. Annars är standardvärdet att använda relevanspoängen för att rangordna resultat. Ett fält måste tilldelas som sorterbart för att vara en kandidat för den här parametern.

Listan ovan är representativ men inte fullständig. En fullständig lista över parametrar för en frågebegäran finns i Sök dokument (REST API).

Typer av frågor

Med några få viktiga undantag itereras en frågebegäran över inverterade index som är strukturerade för snabba genomsökningar, där en matchning kan hittas i potentiellt alla fält, inom ett valbart antal sökdokument. I Cognitive Search är den primära metoden för att hitta matchningar antingen fulltextsökning eller filter, men du kan också implementera andra välkända sökupplevelser som automatisk komplettering eller geoplatssökning. Resten av den här artikeln sammanfattar frågor i Cognitive Search innehåller länkar till mer information och exempel.

Om sökappen innehåller en sökruta som samlar in termindata är fulltextsökning förmodligen den frågeåtgärd som backar upp den upplevelsen. Fulltextsökning accepterar termer eller fraser som skickas i en search parameter i alla sökbara fält i ditt index. Valfria booleska operatorer i frågesträngen kan ange kriterier för inkludering eller exkludering. Både den enkla parsern och den fullständiga parsern stöder fulltextsökning.

I Cognitive Search bygger fulltextsökning på Apache Lucene-frågemotorn. Frågesträngar i fulltextsökning genomgår lexikal analys för att göra genomsökningar mer effektiva. Analysen omfattar gemener för alla termer, borttagning av stoppord som "the" och minskning av termer till primitiva rotformulär. Standardanalys är Standard Lucene.

När matchande termer hittas återutsöker frågemotorn ett sökdokument som innehåller matchningen med hjälp av dokumentnyckeln eller ID:t för att sätta ihop fältvärden, rangordnar dokumenten i relevansordning och returnerar de 50 främsta (som standard) i svaret eller ett annat tal om du har angett top .

Om du implementerar fulltextsökning kan du felsöka eventuella frågeavvikelser genom att förstå hur ditt innehåll tokeniseras. Frågor över bindestreckssträngar eller specialtecken kan kräva att du använder ett annat analysverktyg än standardstandarden Lucene för att säkerställa att indexet innehåller rätt token. Du kan åsidosätta standardinställningen med språkanalysverktyg eller specialiserade analysverktyg som ändrar lexikal analys. Ett exempel är nyckelord som behandlar hela innehållet i ett fält som en enda token. Detta är användbart för data som postnummer, ID:er och vissa produktnamn. Mer information finns i Partiell termsökning och mönster med specialtecken.

Om du förväntar dig tung användning av booleska operatorer, vilket är troligare i index som innehåller stora textblock (ett innehållsfält eller långa beskrivningar), bör du testa frågor med parametern för att utvärdera effekten av den inställningen på searchMode=Any|All boolesk sökning.

Komplettera automatiskt och föreslå frågor

Automatisk komplettering eller föreslagna resultat är alternativ till som utlös efterföljande frågebegäranden baserat på partiella strängindata (efter varje tecken) i en sök-som-du-typ-upplevelse. search Du kan använda autocomplete suggestions parametern och tillsammans eller separat, enligt beskrivningen i den här självstudien, men du kan inte använda dem med search . Både slutförda termer och föreslagna frågor härleds från indexinnehåll. 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).

Filter används ofta i appar som innehåller Cognitive 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 särskilt frågeformulär, enligt beskrivningen i följande tabell. Du kan använda ett filter med en ospecificerad sökning ( ) eller med en frågesträng som innehåller search=* termer, fraser, operatorer och mönster.

Filterscenario Description
Intervallfilter I Azure Cognitive Search omfångsfrågor med hjälp av filterparametern. Mer information och exempel finns i Exempel på intervallfilter.
Geoplatssökning Om ett sökbart fält är av typen Edm.GeographyPointkan du skapa ett filteruttryck för "hitta nära mig" eller kartbaserade sökkontroller. Fält som kör geo-sökning innehåller koordinater. Mer information och ett exempel finns i Geo-sökexempel.
Aspektbaserad navigering I det fasetterade navigeringsträdet kan användarna välja fasetter, vilket begränsar resultatet för varje klick. Varje fasett backas upp av ett filter som exkluderar dokument som inte längre matchar kriterierna.

Anteckning

Text som används i ett filteruttryck analyseras inte under frågebearbetningen. Textinmatningen antas vara ett ordagrann teckenmönster som antingen lyckas eller misslyckas på matchningen. Filteruttryck konstrueras med OData-syntax och skickas i filter en parameter i alla filtrerbara fält i ditt index. Mer information finns i Filter i Azure Cognitive Search.

Dokument look-up

Till skillnad från 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 det enda dokumentet begärs och returneras. När en användare väljer ett objekt i sökresultatet är det vanligt 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 är beroende av den fullständiga Lucene-parsern och operatorerna som utlöser ett specifikt frågebeteende.

Frågetyp Användning Exempel och mer information
Fältsökning search Parametern queryType=full Skapa ett sammansatt frågeuttryck som riktar sig mot ett enda fält.
Exempel på fältsök
fuzzy-sökning search Parametern queryType=full Matchar termer med liknande konstruktion eller stavning.
Exempel på fuzzy-sökning
närhetssökning search Parametern queryType=full Hittar termer som är nära varandra i ett dokument.
Exempel på närhetssökning
term boost search Parametern queryType=full Rangordnar ett dokument högre om det innehåller den förstärkta termen i förhållande till andra som inte gör det.
Exempel på termstärning
sökning efter reguljära uttryck search Parametern queryType=full Matchar baserat på innehållet i ett reguljärt uttryck.
Exempel på reguljära uttryck
sökning med jokertecken eller prefix search parameter med * ~ eller ? , queryType=full Matchar baserat på ett prefix och tilde ( ~ ) eller ett enskilt tecken ( ? ).
Exempel på sökning med jokertecken

Nästa steg

En närmare titt på frågeimplementering finns i exemplen för varje syntax. Om fulltextsökning är nytt för dig kan en närmare titt på vad frågemotorn gör vara ett lika bra val.