Vytváření dotazů v Azure Cognitive Search

Pokud dotaz sesestavíte poprvé, tento článek popisuje přístupy a metody pro nastavení dotazů. Představuje také požadavek na dotaz a vysvětluje, jak mohou atributy polí a lingvistické analyzátory ovlivnit výsledky dotazu.

Co je požadavek na dotaz?

Dotaz je požadavek jen pro čtení na kolekci docs jednoho vyhledávacího indexu. Určuje parametr search, který obsahuje výraz dotazu sestávající z termínů, frází uzavřených v uvozovce a operátorů.

Další parametry v požadavku poskytují další definici dotazu a odpovědi. Například obory searchFields dotazují provádění dotazů na konkrétní pole, "select" určuje, která pole se vrátí ve výsledcích, a "count" vrátí počet shod nalezených v indexu.

Následující příklad vám poskytne obecnou představu o požadavku na dotaz zobrazením některých dostupných parametrů. Další informace o složení dotazů najdete v tématu Typy a složení dotazů a Hledání 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"
}

Volba klienta

Budete potřebovat nástroj, jako je Azure Portal nebo Postman, nebo kód, který vytvoří instanci klienta dotazů pomocí rozhraní API. Pro raný Azure Portal testování a testování konceptu doporučujeme použít rozhraní REST API nebo rozhraní REST API.

Oprávnění

Požadavek na dotaz vyžaduje oprávnění ke čtení udělená prostřednictvím klíče rozhraní API předané v hlavičce. Každá operace, včetně požadavků na dotazy, bude fungovat v klíči rozhraní APIsprávce, ale požadavky na dotazy mohou volitelně používat klíč rozhraní API pro dotazy. Důrazně doporučujeme dotazovat klíče rozhraní API. Můžete vytvořit až 50 klíčů pro každou službu a přiřadit různé klíče různým aplikacím.

V Azure Portal přístup k nástrojům, průvodcům a objektům vyžaduje ve službě členství v roli Přispěvatel nebo vyšší.

Použití Azure Portal k dotazování indexu

Průzkumník služby Search (portál) je rozhraní dotazů v Azure Portal, které spouští dotazy na indexy základní vyhledávací služby. Portál interně vytváří požadavky na vyhledávání dokumentů, ale nemůže vyvolat automatické dokončování, návrhy ani vyhledávání dokumentů.

Můžete vybrat libovolný index a REST API verzi, včetně verze Preview. Řetězec dotazu může používat jednoduchou nebo úplnou syntaxi s podporou všech parametrů dotazu (filter, select, searchFields atd.). Když na portálu otevřete index, můžete pracovat s Průzkumníkem služby Search společně s definicí INDEXU JSON na kartách vedle sebe, abyste měli snadný přístup k atributům polí. Při testování dotazů zkontrolujte, která pole jsou prohledávatelná, seřaditelná, filtrovatelná a facetable.

Použití klienta REST

Postman i Visual Studio Code (s rozšířením pro Azure Cognitive Search) mohou fungovat jako klient dotazů. Pomocí obou nástrojů se můžete připojit ke vyhledávací službě a odesílat žádosti o službu Search Documents (REST). Mnoho kurzů a příkladů ukazuje klienty REST pro dotazování indexování.

Začněte s některou z těchto článků a seznamte se s jednotlivými klienty (oba obsahují pokyny pro dotazy):

Každý požadavek je samostatný, takže při každém požadavku musíte zadat koncový bod, název indexu a verzi rozhraní API. Do hlavičky požadavku se předá další vlastnosti Content-Type a klíč rozhraní API. Další informace najdete v tématu Hledání dokumentů (REST), které vám pomůžou při formulovat žádosti o dotazy.

Použití sady SDK

Pro Cognitive Search nástroje Azure SDK implementují obecně dostupné funkce. Proto můžete k dotazování indexu použít libovolnou ze sdk. Všechny poskytují Objekt SearchClient, který obsahuje metody pro interakci s indexem, od načítání indexu s vyhledávacími dokumenty až po formulovat žádosti o dotazy.

Azure SDK Klient Příklady
.NET SearchClient DotNetHowTo
Java SearchClient SearchForDynamicDocumentsExample.java
JavaScript SearchClient Čekající.
Python SearchClient sample_simple_query.py

Volba typu dotazu: jednoduché | Plné

Pokud je váš dotaz fulltextové vyhledávání, použije se analyzátor dotazů ke zpracování libovolného textu, který se předává jako hledané termíny a fráze. Azure Cognitive Search nabízí dva analyzátory dotazů.

  • Jednoduchý analyzátor rozumí jednoduché syntaxi dotazů. Tento analyzátor byl vybrán jako výchozí pro jeho rychlost a efektivitu v textových dotazech volného tvaru. Syntaxe podporuje běžné vyhledávací operátory (AND, OR, NOT) pro vyhledávání termínů a frází a předponu ( * ) vyhledávání (jako v "sea*" pro Seattle a Snhom). Obecným doporučením je nejprve vyzkoušet jednoduchý analyzátor a pak přejít k úplnému analyzátoru, pokud požadavky na aplikaci volají po výkonnějších dotazech.

  • Úplná syntaxe dotazů Lucenepovolená při přidání do požadavku je založená queryType=full na apache lucene parseru.

Úplná syntaxe a jednoduchá syntaxe se překrývají do té míry, že obě podporují stejnou předponu i logické operace, ale úplná syntaxe poskytuje více operátorů. V úplném přehledu je k dispozici více operátorů pro logické výrazy a dalších operátorů pro pokročilé dotazy, jako je vyhledávání přibližných shod, vyhledávání pomocí zástupných znaků, vyhledávání bezkontaktní výrazy a regulární výrazy.

Volba metod dotazů

Hledání je v podstatě cvičení řízené uživatelem, kde se termíny nebo fráze shromažďují z vyhledávacího pole nebo události kliknutí na stránce. Následující tabulka shrnuje mechanismy, podle kterých můžete shromažďovat uživatelské vstupy a očekávané možnosti vyhledávání.

Vstup Prostředí
Metoda search Uživatel do vyhledávacího pole s operátory nebo bez operátorů zadá termíny nebo fráze a kliknutím na Hledat odešle požadavek. Hledání se může používat s filtry na stejném požadavku, ale ne s automatickým dokončováním nebo návrhy.
Metoda automatického dokončování Uživatel zadá několik znaků a dotazy se zahájí po zadání každého nového znaku. Odpovědí je dokončený řetězec z indexu. Pokud je zadaný řetězec platný, uživatel kliknutím na Hledat odešle tento dotaz do služby.
Metoda Suggestions Stejně jako u automatického dokončování uživatel zadá několik znaků a vygenerují se přírůstkové dotazy. Odpověď je rozevírací seznam odpovídajících dokumentů, který obvykle reprezentuje několik jedinečných nebo popisných polí. Pokud je některý z výběrů platný, uživatel na něj klikne a vrátí se odpovídající dokument.
Fasetová navigace Na stránce se zobrazují navigační odkazy nebo navigace s průvodcem, na které můžete kliknout a zúžit tak rozsah hledání. Strukturovaná navigace s vlastnostmi se dynamicky skládá na základě počátečního dotazu. Například k naplnění search=* faceted navigačního stromu skládající se z každé možné kategorie. Strukturovaná navigace s vlastnostmi se vytvoří z odpovědi na dotaz, ale je to také mechanismus pro vyjádření dalšího dotazu. n REST API, je zdokumentovaný jako parametr dotazu operace Search Documents, ale je možné ho facets použít bez search parametru .
Metoda Filter Filtry se používají s facets k zúžení výsledků. Můžete také implementovat filtr za stránkou, například pro inicializaci stránky pomocí polí specifických pro jazyk. V REST API se dokumentuje jako parametr dotazu operace Search Documents, ale je možné ho $filter použít bez search parametru .

Znát atributy pole

Pokud jste si už dříve prohlédněte typydotazů a jejich složení, možná si pamatujete, že parametry požadavku dotazu závisí na tom, jak jsou pole v indexu přisuzována. Pokud chcete například použít v dotazu, filtru nebo pořadí řazení, musí být pole prohledáovatelné, filtrovatelné a seřaditelné. Podobně se ve výsledcích dají zobrazit pouze pole označená jako zobrazitelná. Při zadávání parametrů , a v požadavku nezapomeňte zkontrolovat atributy, abyste se vyhnuli search filter orderby neočekávaným výsledkům.

Na snímku obrazovky portálu pod ukázkovým indexem hotelsje možné v klauzuli only použít pouze poslední dvě pole LastRenovationDate a "$orderby" Rating.

Definice indexu pro ukázku hotelu

Popis atributů polí najdete v tématu Vytvoření indexu (REST API).

Znát tokeny

Během indexování používá vyhledávací modul analyzátor k provádění analýzy textu s řetězci a maximalizuje tak potenciál porovnávání v době dotazu. Řetězce jsou minimálně malá písmena, ale můžou také procházejí procesem zmrazování a zastavením odebírání slov. Větší řetězce nebo složená slova se obvykle rozděluje prázdnými znaky, spojovníky nebo pomlčkami a indexuje se jako samostatné tokeny.

Zde je třeba se odchýlit od toho, co váš index podle vás obsahuje a co v tomto indexu vlastně je, se může lišit. Pokud dotazy nevrací očekávané výsledky, můžete zkontrolovat tokeny vytvořené analyzátorem prostřednictvím analýzy textu (REST API). Další informace o tokenizaci a dopadu na dotazy najdete v tématu Částečné vyhledávání termínů a vzory se speciálními znaky.

Další kroky

Teď, když máte lepší přehled o tom, jak žádosti o dotazy fungují, vyzkoušejte následující rychlé starty, které vám posouží zkušenosti s vašimi zkušenostmi.