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):
- Vytvoření vyhledávacího indexu pomocí REST a Postmanu
- Začínáme s Visual Studio Code a Azure Cognitive Search
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=fullna 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.

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.