Hledání dokumentů (Azure Kognitivní hledání REST API)

Požadavek na dotaz cílí na kolekci dokumentů s jedním indexem ve vyhledávací službě. Obsahuje parametry, které definují kritéria shody, a parametry, které tvarují odpověď.

Můžete použít GET nebo POST. Parametry dotazu jsou zadány v řetězci dotazu v případě požadavků GET a v textu žádosti v případě požadavků post.

GET https://[service name].search.windows.net/indexes/[index name]/docs?[query parameters] 
  Content-Type: application/json   
  api-key: [admin or query key]  
POST https://[service name].search.windows.net/indexes/[index name]/docs/search?api-version=[api-version]  
  Content-Type: application/json  
  api-key: [admin or query key]  

Při volání metody GET nemůže adresa URL požadavku překročit 8 KB. Tato délka je obvykle dostatečná pro většinu aplikací. Některé aplikace však vytváří velmi velké dotazy, konkrétně při použití výrazů filtru OData. Pro tyto aplikace je HTTP POST lepší volbou, protože umožňuje větší filtry než GET.

S POST je počtem klauzulí ve filtru omezující faktor, nikoli velikost nezpracovaného řetězce filtru, protože limit velikosti požadavku pro POST je přibližně 16 MB. I když je limit velikosti požadavku POST velmi velký, výrazy filtru nelze libovolně složitě složitě. Další informace o omezeních složitosti filtru najdete v tématu syntaxe výrazu OData pro Azure kognitivní hledání.

Parametry identifikátoru URI

Parametr Popis
[název služby] Povinná hodnota. Nastavte na jedinečný, uživatelsky definovaný název vaší vyhledávací služby.
[název indexu]/docs Povinná hodnota. Určuje kolekci dokumentů pojmenovaného indexu.
[parametry dotazu] Parametry dotazu jsou zadány v identifikátoru URI pro požadavky GET a v těle žádosti pro požadavky POST.
verze-api Povinná hodnota. Aktuální stabilní verze je api-version=2020-06-30 . Další verze najdete v tématu verze rozhraní API . Pro dotazy je verze API-Version vždy zadána jako parametr URI pro GET i POST.

Doporučení pro kódování adresy URL

Nezapomeňte zadat parametry dotazu specifické pro kódování URL při přímém volání metody Get REST API. Pro operaci hledání dokumentů může být pro následující parametry dotazu potřeba kódování URL.

  • search
  • $filter
  • omezující vlastnost
  • highlightPreTag
  • highlightPostTag

Kódování adresy URL se doporučuje jenom pro jednotlivé parametry. Pokud omylem zakódujete celý řetězec dotazu (vše za tím ? ,), požadavky budou přerušeny.

Kódování adresy URL je také nutné při volání REST API přímo pomocí GET. Při použití POST nebo při použití klientské knihovny Azure kognitivní hledání .NET, která pro vás zpracovává kódování, není nutné žádné kódování URL.

Hlavičky požadavku

V následující tabulce jsou popsány povinné a volitelné hlavičky požadavků.

Pole Popis
Typ obsahu Povinná hodnota. Nastavit jako Application/JSON
klíč rozhraní API Povinná hodnota. Jedinečný, systémem generovaný řetězec, který ověřuje požadavek na vaši vyhledávací službu. Dotazy na požadavky na kolekci dokumentů můžou jako klíč rozhraní API zadat buď klíč správce, nebo dotazový klíč. Klíč dotazu se používá pro operace jen pro čtení pro kolekci dokumentů. Klíč rozhraní API můžete najít na řídicím panelu vyhledávací služby v Azure Portal.

Text požadavku

Pro GET: none.

Pro POST:

{  
     "count": true | false (default),  
     "facets": [ "facet_expression_1", "facet_expression_2", ... ],  
     "filter": "odata_filter_expression",  
     "highlight": "highlight_field_1, highlight_field_2, ...",  
     "highlightPreTag": "pre_tag",  
     "highlightPostTag": "post_tag",  
     "minimumCoverage": # (% of index that must be covered to declare query successful; default 100),  
     "orderby": "orderby_expression",  
     "queryType": "simple" (default) | "full",
     "scoringParameters": [ "scoring_parameter_1", "scoring_parameter_2", ... ],  
     "scoringProfile": "scoring_profile_name",  
     "scoringStatistics" : "local" | "global",
     "search": "simple_query_expression",  
     "searchFields": "field_name_1, field_name_2, ...",  
     "searchMode": "any" (default) | "all",  
     "select": "field_name_1, field_name_2, ...",  
     "sessionId" : "session_id",
     "skip": # (default 0),  
     "top": #  
   }  

Pokračování částečných odpovědí na hledání

Někdy Azure Kognitivní hledání nemůže vrátit všechny požadované výsledky v rámci jedné odpovědi hledání. K tomu může dojít z různých důvodů, například když dotaz požádá o příliš mnoho dokumentů, protože nespecifikuje $top nebo neurčuje hodnotu pro $top, která je příliš velká. V takových případech bude Azure Kognitivní hledání obsahovat @odata.nextLink anotaci v těle odpovědi a také v případě, že se jednalo @search.nextPageParameters o požadavek POST. Hodnoty těchto poznámek můžete použít k formulaci jiné žádosti o vyhledávání k získání další části odpovědi na hledání. To se označuje jako pokračování původního požadavku na hledání a poznámky se obecně nazývají tokeny pro pokračování. Podrobnosti o syntaxi těchto poznámek a jejich zobrazení v těle odpovědi najdete v příkladu v odpovědi níže.

Důvody, proč může Azure Kognitivní hledání vracet pokračování tokeny, jsou specifické pro konkrétní implementaci a můžou se měnit. Robustní klienti by měli být vždycky připraveni zpracovat případy, kdy se vrátí méně dokumentů, než se očekávalo, a k pokračování načítání dokumentů je k dispozici token pro pokračování. Všimněte si také, že je nutné použít stejnou metodu HTTP jako původní požadavek, aby bylo možné pokračovat. Pokud jste například poslali požadavek GET, všechny požadavky na pokračování, které odesíláte, musí také použít metodu GET (a také pro POST).

Poznámka

Účelem @odata.nextLink a @search.nextPageParameters je chránit službu před dotazy, které vyžadují příliš mnoho výsledků, a neposkytují obecný mechanismus stránkování. Pokud chcete procházet stránkou pomocí výsledků, použijte $top a $skip dohromady. Například pokud chcete, aby se na stránkách o velikosti 10 nastavila vaše první žádost $top = 10 a $skip = 0, druhá žádost by měla být $top = 1 a $skip = 10, třetí požadavek by měl mít $top = 10 a $skip = 20 atd.

Parametry dotazu

Dotaz přijímá několik parametrů na adrese URL při volání s vlastnostmi GET a as JSON v textu požadavku při volání metody POST. Syntaxe některých parametrů je mírně odlišná mezi GET a POST. Tyto rozdíly jsou uvedeny níže.

Název Typ Popis
verze-api řetězec Povinná hodnota. Verze REST API použitá pro požadavek Seznam podporovaných verzí najdete v tématu verze rozhraní API. Pro tuto operaci je verze API-Version zadána jako parametr URI bez ohledu na to, zda zavoláte dokumenty hledání pomocí funkce Get nebo post.
$count boolean Nepovinný parametr. Platné hodnoty jsou "true" nebo "false". Výchozí hodnota je false. Při volání s parametrem POST je tento parametr pojmenovaným počtem místo $count. Určuje, zda se má načíst celkový počet výsledků. Jedná se o počet všech dokumentů, které odpovídají parametrům hledání a $filter a ignorují $top a $skip. Nastavením hodnoty "true" může dojít ke snížení výkonu. Vrácený počet je aproximace. Pokud chcete získat jenom počet bez dokumentů, můžete použít $top = 0.
omezující vlastnost řetězec Nepovinný parametr. Pole, podle kterého má být omezující vlastnost. Řetězec může obsahovat parametry pro přizpůsobení facetingu vyjádřeného jako dvojice název-hodnota oddělené čárkami. Při volání s parametrem POST se tento parametr nazývá facets místo facet.

Platné jsou "count", "sort", "values", "interval" a "timeoffset".

"count" je maximální počet termínů facet; výchozí hodnota je 10. Neexistuje žádné horní omezení počtu termínů, ale vyšší hodnoty budou mít snížený výkon, zejména pokud omezující pole obsahuje velký počet jedinečných termínů. Například "facet=category,count:5" získá pět nejlepších kategorií ve výsledcích facet. Pokud je parametr count menší než počet jedinečných termínů, nemusí být výsledky přesné. Je to způsobeno tím, jak se dotazy s facetingem distribuují mezi horizontální oddíly. Zvýšení počtu obecně zvyšuje přesnost počtů termínů, ale za výkonnostní náklady.

"sort" lze nastavit na "count", "-count", "value", "-value". Pomocí funkce count můžete seřadit sestupně podle počtu. Pokud chcete seřadit vzestupně podle počtu, použijte -count. Použijte hodnotu k seřazení vzestupně podle hodnoty. Pomocí parametru -value můžete seřadit sestupně podle hodnoty (například "facet=category,count:3,sort:count" získá nejlepší tři kategorie ve výsledcích facet v sestupném pořadí podle počtu dokumentů s každým názvem města). Pokud jsou první tři kategorie Budget ( Rozpočet), Nai (Kbelík) a Budget (Luxusní) a Budget (Rozpočet) má 5 přístupů, Má 6 a Luxusní 4, pak se kbelíky budou v pořadí Podle, Rozpočet, Luxusní. Pro -value, "facet=rating,sort:-value" vytvoří kbelíky pro všechna možná hodnocení v sestupném pořadí podle hodnoty (například pokud jsou hodnocení od 1 do 5, kbelíky se seřadí 5, 4, 3, 2, 1, bez ohledu na to, kolik dokumentů odpovídá jednotlivým hodnocením).

"hodnoty" lze nastavit na číselné hodnoty oddělené čárkami nebo hodnoty Edm.DateTimeOffset určující dynamickou sadu vstupních hodnot omezujících vlastností (například "facet=baseRate,values:10 20" vytvoří tři kbelíky: jeden pro základní sazbu 0 až do , ale nezačne 10, jeden pro 10 až do, ale nezačne 20, a jeden pro | 20 a vyšší). Řetězec "facet=lastRenovationDate,values:2010-02-01T00:00:00Z" vytvoří dva kbelíky: jeden pro hotely zachované před únorem 2010 a jeden pro hotely s prostou hodnotou 1. února 2010 nebo novější.

"interval" je celočíselný interval větší než 0 pro čísla, nebo minuta, hodinu, den, týden, měsíc, čtvrtletí, rok pro hodnoty data a času. Například "facet=baseRate,interval:100" vytvoří kbelíky na základě rozsahů základní sazby o velikosti 100. Pokud jsou základní sazby v rozmezí 60 až 600 USD, budou k dispozici kbelíky pro 0–100, 100–200, 200–300, 300–400, 400–500 a 500–600. Řetězec "facet=lastRenovationDate,interval:year" vytvoří jeden kbelík pro každý rok, kdy byly hotely zredukovány.

"timeoffset" lze nastavit na ([+-]hh:mm, [+-]hhmm nebo [+-]hh). Pokud se použije, musí být parametr timeoffset zkombinován s možností intervalu a pouze při použití na pole typu Edm.DateTimeOffset. Hodnota určuje posun času UTC, který se má zohlednit při nastavování časových hranic. Například: "facet=lastRenovationDate,interval:day,timeoffset:-01:00" používá hranici dne, která začíná v 1:00:00 UTC (půlnoc v cílovém časovém pásmu).

funkce count a sort je možné kombinovat ve stejné specifikaci facet, ale nelze je kombinovat s intervalem nebo hodnotami a interval a hodnoty nelze kombinovat.

Pokud není timeoffset zadaný, vypočítají se facety intervalu pro datum a čas na základě času UTC. Příklad: pro "facet=lastRenovationDate,interval:day", hranice dne začíná v 00:00:00 UTC.
$filter řetězec Nepovinný parametr. Strukturovaný vyhledávací výraz ve standardní syntaxi OData. Ve filtru lze použít pouze filtrovatelná pole. Při volání s parametrem POST má tento parametr název filter místo $filter. Podrobnosti o podmnožině gramatiky výrazu OData, Azure Cognitive Search podporuje, najdete v tématu Syntaxe výrazu OData Azure Cognitive Search jazyka.
Zvýraznit řetězec Nepovinný parametr. Sada názvů polí oddělených čárkami, které se používají pro zvýrazňování hitů. Ke zvýrazňování přístupů je možné použít pouze prohledávatelná pole. Ve výchozím Azure Cognitive Search vrátí až 5 zvýraznění na pole. Limit je konfigurovatelný pro pole připojením "-<# of highlights>" za název pole. Například "highlight=title-3,description-10" vrátí až 3 zvýrazněné přístupy z pole názvu a až 10 shod z pole popisu. Maximální počet zvýraznění musí být celé číslo v rozmezí od 1 do 1 000 včetně.
highlightPostTag řetězec Nepovinný parametr. Výchozí hodnota je "</em>" . Značka řetězce, která se připojí ke zvýrazněnému termínu. Musí být nastavené s vlastností highlightPreTag. Rezervované znaky v adrese URL musí být zakódované v procentech (například %23 místo #).
zvýraznitPreTag řetězec Nepovinný parametr. Výchozí hodnota je "</em>" . Značka řetězce, která je před zvýrazněný termín. Musí být nastavené s highlightPostTag. Rezervované znaky v adrese URL musí být zakódované v procentech (například %23 místo #).
minimumCoverage integer Nepovinný parametr. Platné hodnoty jsou číslo v rozmezí 0 až 100, které označuje procento indexu, které musí být k dispozici pro zpracování dotazu, než bude možné ho nahlásit jako úspěšný. Výchozí hodnota je 100.

Stoprocentní pokrytí znamená, že všechny horizontální oddíly na požadavek odpověděly (ani problémy se stavem služby ani aktivity údržby nesnížely pokrytí). Ve výchozím nastavení vrátí méně než úplné pokrytí stavový kód HTTP 503.

Snížení hodnoty minimumCoverage může být užitečné, pokud dochází k chybám 503 a chcete zvýšit pravděpodobnost úspěchu dotazu, zejména u služeb nakonfigurovaných pro jednu repliku. Pokud nastavíte parametr minimumCoverage a funkce Search bude úspěšná, vrátí kód HTTP 200 a do odpovědi zahrne hodnotu udávající procento indexu, který byl zahrnut @search.coverage do dotazu. V tomto scénáři není zaručeno, že ve výsledcích hledání budou přítomné všechny odpovídající dokumenty, ale pokud je dostupnost vyhledávání důležitější než odvolání, může být snížení pokrytí přijatelné strategie pro zmírnění rizika.
$orderby řetězec Nepovinný parametr. Seznam výrazů oddělených čárkami pro seřazení výsledků. Při volání s parametrem POST má tento parametr název orderby místo $orderby. Každý výraz může být buď název pole, nebo volání funkce geo.distance(). Každý výraz může být následován "asc" pro označení vzestupně a "desc" pro označení sestupně. Pokud pole řazení obsahuje hodnoty null, zobrazí se nejprve hodnoty null ve vzestupném pořadí a poslední v sestupném pořadí. Výchozí hodnota je vzestupné pořadí. Vazby budou porušené skóre shody dokumentů. Pokud není $orderby, výchozí pořadí řazení je sestupné podle skóre shody dokumentu. Existuje limit 32 klauzulí pro $orderby.
queryType (typ dotazu) řetězec Nepovinný parametr. Platné hodnoty jsou "jednoduché" nebo "úplné". Výchozí hodnota je "simple".

"simple" interpretuje řetězce dotazů pomocí jednoduché syntaxe dotazu, která umožňuje používat symboly + jako , a * "" . Dotazy se ve výchozím nastavení vyhodnocují ve všech prohledáovatelných polích (nebo polích uvedených v polích searchField).

"full" interpretuje řetězce dotazů pomocí úplné syntaxe dotazů Lucene, která umožňuje hledání specifická pro pole a vážená hledání. Vyhledávání v rozsahu v dotazovacím jazyce Lucene se nepodporuje ve prospěch $filter který nabízí podobné funkce.
bodovací parametr řetězec Nepovinný parametr. Označuje hodnoty pro každý parametr definovaný ve funkci vyhodnocování (například referencePointParameter) ve formátu "name-value1,value2,..." Při volání s parametrem POST má tento parametr název scoringParameters namísto scoringParameter. Zadáte ho také jako pole řetězců JSON, kde každý řetězec je samostatný pár název-hodnota.

V případě profilů vyhodnocování, které obsahují funkci, oddělte funkci od jejího vstupního seznamu - znakem. Například funkce s názvem by "mylocation" byla "&scoringParameter=mylocation--122.2,44.8". První pomlčka odděluje název funkce od seznamu hodnot, zatímco druhý pomlčka je součástí první hodnoty (v tomto příkladu zeměpisná délka).

U hodnoticím parametrů, jako je zvýšení značky, které může obsahovat čárky, můžete pomocí jednoduchých uvozovek uvozovek u všech takových hodnot v seznamu uvozovek uvozovat. Pokud samotné hodnoty obsahují jednoduché uvozovky, můžete je uvozit pomocí dvou uvozovek. Předpokládejme, že máte parametr zvýšení značky s názvem a chcete zvýšit hodnoty značek "Hello, O'Brien" a "Smith", parametr řetězce dotazu by pak byl "mytag" &scoringParameter=mytag-'Hello, O''Brien',Smith. Uvozovky jsou povinné jenom pro hodnoty, které obsahují čárky.
bodovací profil řetězec Nepovinný parametr. Název bodovacího profilu pro vyhodnocení skóre shody pro odpovídající dokumenty za účelem seřazení výsledků.
scoringStatistics řetězec Nepovinný parametr. Platné hodnoty jsou "local" nebo "global". Výchozí hodnota je "local". Určete, jestli se mají vypočítat statistiky vyhodnocování, jako je frekvence dokumentů, globálně (napříč všemi horizontálními oddíly) pro konzistentnější bodování, nebo místně (v aktuálním horizontálním oddílu), aby se snížila latence. Viz Bodovací statistika v Azure Cognitive Search. Statistika bodování se vždy vypočítá místně pro termíny, které používají vyhledávání přibližných shod (~).
search řetězec Nepovinný parametr. Text, který chcete vyhledat. Pokud nezadáte pole searchField, budou se ve výchozím nastavení prohledávat všechna prohledávatelná pole. V indexu se text ve prohledátelném poli tokenizuje, takže více termínů je možné oddělit mezerami (například: 'search=hello world'). Pokud se chcete shodovat s libovolným termínem, použijte * (to může být užitečné pro dotazy logického filtru). Vynechání tohoto parametru má stejný účinek jako jeho nastavení na * . Konkrétní informace o syntaxi vyhledávání najdete v tématu Jednoduchá syntaxe dotazů.

Při dotazování na prohledávatelná pole mohou být výsledky občas překvapivé. Tokenizér obsahuje logiku pro zpracování případů běžných pro anglický text, jako jsou apostrofy, čárky v číslech atd. Například 'search=123,456' se bude shodovat s jedním termínem '123,456' místo jednotlivých termínů '123' a '456', protože čárky se používají jako oddělovače tisíců pro velká čísla v angličtině. Z tohoto důvodu doporučujeme místo interpunkce použít prázdné znaky k oddělení termínů v parametru search.
searchMode řetězec Nepovinný parametr. Platné hodnoty jsou "any" nebo "all" Defaults na "any". Určuje, jestli se musí shodovat hledaný termín nebo všechny hledaný výrazy, aby bylo možné dokument spočítat jako shodu.
vyhledávací pole řetězec Nepovinný parametr. Seznam názvů polí oddělených čárkami pro vyhledání zadaného textu. Cílová pole musí být ve schématu indexu označena jako prohledávatelná.
$select řetězec Nepovinný parametr. Seznam polí oddělených čárkami, která se mají zahrnout do sady výsledků dotazu. Do této klauzule je možné zahrnout pouze pole označená jako zobrazitelná. Pokud parametr neurčíte nebo nastavíte na hodnotu , budou všechna pole označená jako zobrazitelná ve schématu * zahrnuta v projekci. Při volání s parametrem POST má tento parametr název select místo $select.
Sessionid řetězec Nepovinný parametr. Použití sessionId pomáhá zlepšit konzistenci skóre relevance pro vyhledávací služby s více replikami. V konfiguracích s více replikami mohou být drobné rozdíly mezi skóre relevance jednotlivých dokumentů pro stejný dotaz. Když je zadané ID relace, služba vynaložit veškeré úsilí ke směrování daného požadavku do stejné repliky pro danou relaci. Važte, že opakované použití stejných hodnot ID relace může narušovat vyrovnávání zatížení požadavků mezi replikami a nepříznivě ovlivnit výkon vyhledávací služby. Hodnota použitá jako sessionId nemůže začínát znakem _. Pokud služba nemá žádné repliky, nemá tento parametr žádný vliv na výkon nebo konzistenci skóre.
$skip integer Nepovinný parametr. Počet výsledků hledání, které se má přeskočit Při volání s parametrem POST má tento parametr název skip místo $skip. Tato hodnota nesmí být větší než 100 000. Pokud potřebujete kontrolovat dokumenty v pořadí, ale kvůli tomuto omezení nemůžete použít $skip, zvažte použití $orderby u pole, které má jedinečné hodnoty pro každý dokument v indexu (například klíč dokumentu) a $filter s dotazem na rozsah.
$top integer Nepovinný parametr. Počet výsledků hledání, které se načítá Výchozí hodnota je 50. Při volání s parametrem POST má tento parametr název top místo $top. Pokud zadáte hodnotu větší než 1 000 a existuje více než 1 000 výsledků, vrátí se pouze prvních 1 000 výsledků spolu s odkazem na další stránku výsledků (viz následující @odata.nextLink příklad).

Azure Cognitive Search používá stránkování na straně serveru, aby dotazy načítaly příliš mnoho dokumentů najednou. Výchozí velikost stránky je 50, zatímco maximální velikost stránky je 1 000. To znamená, že pokud nezadáte název, vrátí funkce Search Documents (Dokumenty pro vyhledávání) ve výchozím nastavení 50 $top. Pokud existuje více než 50 výsledků, odpověď obsahuje informace pro načtení další stránky s nejvíce 50 výsledky (viz " a @odata.nextLink " " v následujících @search.nextPageParameters příkladech). Podobně platí, že pokud pro $top zadáte hodnotu větší než 1 000 a existuje více než 1 000 výsledků, vrátí se pouze prvních 1 000 výsledků spolu s informacemi pro načtení další stránky s nejvíce 1 000 výsledky.

Odpověď

Stavový kód: Pro úspěšnou odpověď se vrátí 200 OK.

  {
    "@odata.count": # (if $count=true was provided in the query),
    "@search.coverage": # (if minimumCoverage was provided in the query),
    "@search.facets": { (if faceting was specified in the query)
      "facet_field": [
        {
          "value": facet_entry_value (for non-range facets),
          "from": facet_entry_value (for range facets),
          "to": facet_entry_value (for range facets),
          "count": number_of_documents
        }
      ],
      ...
    },
    "@search.nextPageParameters": { (request body to fetch the next page of results if not all results could be returned in this response and Search was called with POST)
      "count": ... (value from request body if present),
      "facets": ... (value from request body if present),
      "filter": ... (value from request body if present),
      "highlight": ... (value from request body if present),
      "highlightPreTag": ... (value from request body if present),
      "highlightPostTag": ... (value from request body if present),
      "minimumCoverage": ... (value from request body if present),
      "orderby": ... (value from request body if present),
      "scoringParameters": ... (value from request body if present),
      "scoringProfile": ... (value from request body if present),
      "scoringStatistics": ... (value from request body if present),
      "search": ... (value from request body if present),
      "searchFields": ... (value from request body if present),
      "searchMode": ... (value from request body if present),
      "select": ... (value from request body if present),
      "sessionId" : ... (value from request body if present),
      "skip": ... (page size plus value from request body if present),
      "top": ... (value from request body if present minus page size),
    },
    "value": [
      {
        "@search.score": document_score (if a text query was provided),
        "@search.highlights": {
          field_name: [ subset of text, ... ],
          ...
        },
        "@search.features": {
          "field_name": {
            "uniqueTokenMatches": feature_score,
            "similarityScore": feature_score,
            "termFrequency": feature_score,
          },
          ...
        },
        key_field_name: document_key,
        field_name: field_value (retrievable fields or specified projection),
        ...
      },
      ...
    ],
    "@odata.nextLink": (URL to fetch the next page of results if not all results could be returned in this response; Applies to both GET and POST)
  }

Příklady

Další příklady najdete v syntaxi výrazů OData pro Azure Cognitive Search.

  1. Vyhledejte Index seřazený sestupně podle data:

    GET /indexes/hotels/docs?search=*&$orderby=LastRenovationDate desc&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "*",  
          "orderby": "LastRenovationDate desc"
        }  
    
  2. Ve vyhledávání s omezením vlastností vyhledejte index a načtěte facety kategorií, hodnocení, značek a také položek s baseRate v konkrétních rozsahech.

    GET /indexes/hotels/docs?search=*&facet=Category&facet=Rating&facet=Tags&facet=Rooms/BaseRate,values:80|150|220&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "test",  
          "facets": [ "Category", "Rating", "Tags", "Rooms/BaseRate,values:80|150|220" ]  
        }  
    

    Všimněte si, že poslední facet je u dílčího pole. Facets počítá nadřazený dokument (Hotels) a ne meziprostřední dílčí dokumenty (místnosti), takže odpověď určí počet hotely, které mají v každém cenovém kbelíku nějaké místnosti.

  3. Pomocí filtru zužte předchozí výsledek dotazu s facetedem poté, co uživatel vybere Hodnocení 3 a kategorii "Nachytá".

    GET /indexes/hotels/docs?search=*&facet=tags&facet=Rooms/BaseRate,values:80|150|220&$filter=Rating eq 3 and Category eq 'Motel'&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "test",  
          "facets": [ "tags", "Rooms/BaseRate,values:80|150|220" ],  
          "filter": "Rating eq 3 and Category eq 'Motel'"  
        }  
    
  4. Ve vyhledávání s omezujícími vlastnostmi nastavte horní limit jedinečných termínů vrácených v dotazu. Výchozí hodnota je 10, ale tuto hodnotu můžete zvýšit nebo snížit pomocí parametru count u atributu facet. Tento příklad vrátí facets pro city omezené na 5.

    GET /indexes/hotels/docs?search=*&facet=Address/City,count:5&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "test",  
          "facets": [ "Address/City,count:5" ]  
        }  
    
  5. Prohledání indexu v konkrétních polích (například v poli jazyka):

    GET /indexes/hotels/docs?search=hôtel&searchFields=Description_fr&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "hôtel",  
          "searchFields": "Description_fr"
        }  
    
  6. Prohledání indexu ve více polích Můžete například ukládat prohledávatelná pole a dotazovat se na je ve více jazycích, a to vše v rámci stejného indexu. Pokud ve stejném dokumentu existují současně anglické a francouzštiny popisy, můžete ve výsledcích dotazu vrátit libovolný nebo vše:

    GET /indexes/hotels/docs?search=hotel&searchFields=Description,Description_fr&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "hotel",  
          "searchFields": "Description, Description_fr"
        }  
    

    Index můžete dotazovat pouze najednou. Nevytvářejte více indexů pro každý jazyk, pokud nemáte v plánu dotazovat se po jednom.

  7. Stránkování – získání první stránky položek (velikost stránky je 10):

    GET /indexes/hotels/docs?search=*&$skip=0&$top=10&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "*",  
          "skip": 0,  
          "top": 10  
        }  
    
  8. Stránkování – získání druhé stránky položek (velikost stránky je 10):

    GET /indexes/hotels/docs?search=*&$skip=10&$top=10&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "*",  
          "skip": 10,  
          "top": 10  
        }  
    
  9. Načtení konkrétní sady polí:

    GET /indexes/hotels/docs?search=*&$select=HotelName,Description&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "*",  
          "select": "HotelName, Description"
        }  
    
  10. Načtení dokumentů odpovídajících určitému výrazu filtru:

    GET /indexes/hotels/docs?$filter=(Rooms/BaseRate ge 60 and Rooms/BaseRate lt 300) or HotelName eq 'Fancy Stay'&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "filter": "(Rooms/BaseRate ge 60 and Rooms/BaseRate lt 300) or HotelName eq 'Fancy Stay'"  
        }  
    
  11. Vyhledejte index a vraťte fragmenty pomocí zvýrazněných náhotů:

    GET /indexes/hotels/docs?search=something&highlight=Description&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "something",  
          "highlight": "Description"  
        }  
    
  12. Prohledat index a vrátit dokumenty seřazené z bližšího umístění od referenčního umístění:

    GET /indexes/hotels/docs?search=something&$orderby=geo.distance(Location, geography'POINT(-122.12315 47.88121)')&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "something",  
          "orderby": "geo.distance(Location, geography'POINT(-122.12315 47.88121)')"
        }  
    
  13. Prohledat index za předpokladu, že existuje profil vyhodnocování s názvem "geo" se dvěma funkcemi vyhodnocování vzdálenosti, jednou definující parametr s názvem "currentLocation" a jedním definující parametr s názvem "lastLocation":

    GET /indexes/hotels/docs?search=something&scoringProfile=geo&scoringParameter=currentLocation--122.123,44.77233&scoringParameter=lastLocation--121.499,44.2113&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "something",  
          "scoringProfile": "geo",  
          "scoringParameters": [ "currentLocation--122.123,44.77233", "lastLocation--121.499,44.2113" ]  
        }  
    
  14. Najděte dokumenty v indexu pomocí jednoduché syntaxe dotazů. Tento dotaz vrátí hotely, kde prohledávatelná pole obsahují termíny "komfort" a "umístění", ale ne "..."

    Get /indexes/hotels/docs?search=comfort +location –motel&searchMode=all&api-version=22020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "comfort +location -motel",  
          "searchMode": "all"  
        }  
    

    Tip

    Použití přepíše výchozí hodnotu , což searchMode=all searchMode=any znamená -motel "A NOT" místo "NEBO NOT". Bez získáte "NEBO NOT", který rozbalí místo toho, aby omezoval výsledky hledání, což může být pro některé uživatele searchMode=all countertuitní.

  15. Vyhledejte dokumenty v indexu pomocí syntaxe dotazů Lucene). Tento dotaz vrátí hotels, kde pole kategorie obsahuje termín "budget" a všechna prohledávatelná pole obsahující frázi "recently zahodí". Dokumenty obsahující frázi "recently zahodí" jsou v důsledku výrazu boost value (3) seřazeny na vyšší úrovni.

    GET /indexes/hotels/docs?search=Category:budget AND \"recently renovated\"^3&searchMode=all&api-version=2020-06-30&querytype=full` 
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
         "search": "Category:budget AND \"recently renovated\"^3",  
          "queryType": "full",  
          "searchMode": "all"  
    }  
    
  16. Najděte v indexu dokumenty a upřednostňte konzistentní vyhodnocování před nižší latencí. Tento dotaz vypočítá frekvence dokumentů napříč celým indexem a bude se snažit cílit na stejnou repliku pro všechny dotazy v rámci stejné "relace", což vám pomůže generovat stabilní a reprodukovatelné hodnocení.

    GET /indexes/hotels/docs?search=hotel&sessionId=mySessionId&scoringStatistics=global&api-version=2020-06-30
    
    POST /indexes/hotels/docs/search?api-version=2020-06-30
        {  
          "search": "hotel",  
          "sessionId": "mySessionId",
          "scoringStatistics" :"global"
        }  
    

Viz také