Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Azure AI Vyhledávač je k dispozici prostřednictvím portálu Azure, rozhraní REST API a Sady Azure SDK. Podporuje také Foundry IQ, spravovanou znalostní vrstvu, která transformuje podnikový obsah na opakovaně použitelné znalostní báze s podporou oprávnění pro agenty na portálu Microsoft Foundry.
Pokud vytváříte dotaz pro fulltextové vyhledávání, najdete v tomto článku postup nastavení požadavku. Představuje také strukturu dotazů a vysvětluje, jak můžou atributy polí a lingvistické analyzátory ovlivnit výsledky dotazů.
Požadavky
Azure AI Vyhledávač service (libovolná úroveň). Vytvořte službu nebo najděte existující.
Index vyhledávání obsahující řetězcová pole, která jsou označena jako prohledávatelná. Jako koncový bod požadavku dotazu můžete použít také alias indexu .
Oprávnění k dotazování indexu:
- Klíčové ověřování: Dotazovací klíč rozhraní API pro vaši vyhledávací službu.
- Ověřování na základě role: Role Čtenář dat indexu vyhledávání
Pro vývoj sady SDK nainstalujte klientskou knihovnu Azure Search:
- Python: azure-search-documents
- .NET: Azure. Search.Documents
- JavaScript: @azure/search-documents
- Java: azure-search-documents
Návod
V případě rychlého příkladu kódu přejděte k příkladu požadavku na fulltextový dotaz.
Příklad požadavku na fulltextový dotaz
V Azure AI Vyhledávač je dotaz požadavkem jen pro čtení pro kolekci dokumentů jednoho indexu vyhledávání s parametry, které informují o spuštění dotazu a tvarují návrat odpovědi.
Fulltextový dotaz se zadává v parametru search a skládá se z termínů, uvozovek uzavřených frází a operátorů. Další parametry přidávají do požadavku další definici.
Následující volání rozhraní REST API služby Search POST znázorňuje požadavek dotazu s použitím search a dalšími parametry.
POST https://[service name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2026-04-01
{
"search": "NY +view",
"queryType": "simple",
"searchMode": "all",
"searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"top": 10,
"count": true
}
Reference:Search POST
Klíčové body
searchposkytuje kritéria shody, obvykle celé termíny nebo fráze, s nebo bez operátorů. Jakékoli pole, které je atributem prohledávatelné ve schématu indexu, je v rozsahu pro operaci vyhledávání.queryTypenastaví analyzátor: jednoduchý, plný. Výchozí jednoduchý analyzátor dotazů je optimální pro fulltextové vyhledávání. Úplný analyzátor dotazů Lucene je určený pro pokročilé konstruktory dotazů, jako jsou regulární výrazy, vyhledávání dle blízkosti, přibližné vyhledávání a vyhledávání zástupných znaků. Tento parametr lze také nastavit na sémantickou pro sémantické řazení pro pokročilé sémantické modelování v odpovědi dotazu.searchModeurčuje, zda jsou shody založeny na všech kritériích (upřednostňují přesnost) nebo kterémkoli kritériu (upřednostňuje vyhledání) ve výrazu. Výchozí hodnota je libovolný. Pokud očekáváte vysoké využití logických operátorů, což je pravděpodobnější v indexech, které obsahují velké textové bloky (pole obsahu nebo dlouhé popisy), nezapomeňte otestovat dotazy s parametremsearchMode=Any|Alla vyhodnotit dopad tohoto nastavení na logické vyhledávání.searchFieldsomezuje provádění dotazu na konkrétní prohledávatelná pole. Během vývoje je užitečné použít stejný seznam polí pro výběr a vyhledávání. V opačném případě může být shoda založená na hodnotách polí, které ve výsledcích nevidíte, což vede k nejistotě, proč byl dokument vrácen.
Parametry použité k tvarování odpovědi:
selecturčuje, která pole se mají v odpovědi vrátit. V příkazu select lze použít pouze pole označená jako načítaná v indexu.topvrátí zadaný počet nejlépe odpovídajících dokumentů. V tomto příkladu se vrátí pouze 10 zásahů. K stránkování výsledků můžete použít možnosti "nahoru" a "přeskočit" (není zobrazeno).countvám řekne, kolik dokumentů v celém indexu odpovídá celkově, což může být větší, než kolik se vrátí. Platné hodnoty jsou true nebo false. Výchozí hodnota je "false". Počet je přesný, pokud je index stabilní, ale při aktivním přidávání, aktualizaci nebo mazání dokumentů vždy buď podhodnocuje nebo nadhodnocuje. Pokud chcete získat pouze počet bez jakýchkoli dokumentů, můžete použít $top=0.orderbyse používá, pokud chcete výsledky seřadit podle hodnoty, jako je hodnocení nebo umístění. V opačném případě je výchozí použít skóre relevance k řazení výsledků. Pole musí být označeno jako sortable, aby bylo kandidátem pro tento parametr.
Volba klienta
V případě počátečního vývoje a testování konceptu začněte s Azure portal nebo klientem REST nebo Jupyter notebook. Tyto přístupy jsou interaktivní, užitečné pro cílené testování a pomáhají vyhodnotit účinky různých vlastností, aniž byste museli psát jakýkoli kód.
Pokud chcete volat vyhledávání z aplikace, použijte klientské knihovny Azure.Document.Search v sadách Azure SDK pro .NET, Java, JavaScript a Python.
V Azure portálu můžete při otevření indexu pracovat s Průzkumníkem vyhledávání společně s definicí JSON indexu na vedlejších kartách, abyste mohli snadno přistupovat k atributům polí. V tabulce Pole zkontrolujte, které z nich se při testování dotazů dají prohledávat, řadit, filtrovat a fasetizovat.
Na webu Azure Portal přejděte do vyhledávací služby.
Ve službě vyberte Indexy a zvolte index.
Index se otevře na kartě Průzkumníka služby Search, abyste se mohli dotazovat hned. Přepnutím do zobrazení JSON zadejte syntaxi dotazu.
Tady je výraz dotazu fulltextového vyhledávání, který funguje pro index ukázek hotelů:
{ "search": "pool spa +airport", "queryType": "simple", "searchMode": "any", "searchFields": "Description, Tags", "select": "HotelName, Description, Tags", "top": 10, "count": true }Reference:Search POST
Následující snímek obrazovky znázorňuje dotaz a odpověď:
Volba typu dotazu: simple | plný
Pokud je 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 AI Vyhledávač nabízí dva analyzátory dotazů.
Jednoduchý analyzátor rozumí syntaxi jednoduchého dotazu. Tento analyzátor byl vybrán jako výchozí pro jeho rychlost a účinnost ve volných textových dotazech. Syntaxe podporuje běžné vyhledávací operátory (AND, OR, NOT) pro hledání termínů a frází a vyhledávání předpon (
*jako vsea*seattlu a přímořském pobřeží). Obecně doporučujeme nejprve vyzkoušet jednoduchý analyzátor a poté přejít na plnohodnotný analyzátor, pokud požadavky aplikace vyžadují výkonnější dotazy.Úplná syntaxe dotazů Lucene, která je povolená při přidání
queryType=fulldo požadavku, je založená na Apache Lucene Parseru.
Úplná syntaxe a jednoduchá syntaxe se překrývají v rozsahu, který podporuje stejnou předponu i logické operace, ale úplná syntaxe poskytuje více operátorů. Existuje celá řada operátorů pro logické výrazy a další operátory pro pokročilé dotazy, jako je vyhledávání přibližných shod, vyhledávání zástupných znaků, vyhledávání podle blízkosti a regulární výrazy.
Volba metod dotazu
Vyhledávání je v podstatě cvičení řízené uživatelem, kde se termíny nebo fráze shromažďují z vyhledávacího pole nebo z kliknutí na události na stránce. Následující tabulka shrnuje mechanismy, podle kterých můžete shromažďovat vstupy uživatelů spolu s očekávaným vyhledávacím prostředím.
| Vstup | Zkušenost |
|---|---|
| Metoda vyhledávání | Uživatel zadá termíny nebo fráze do vyhledávacího pole s operátory nebo bez nich a vybere Hledat pro odeslání požadavku. Hledání se dá použít s filtry ve stejném dotazu, ale ne s automatickým doplňováním nebo návrhy. |
| Metoda automatického dokončování | Uživatel zadá několik znaků a po zadání každého nového znaku se zahájí dotazy. Odpověď je dokončený řetězec z indexu. Pokud je zadaný řetězec platný, uživatel vybere Hledat a odešle tento dotaz do služby. |
| Metoda Návrhu | Uživatel napíše několik znaků a generují se přírůstkové dotazy, stejně jako u automatického dokončování. Odpověď je rozevírací seznam odpovídajících dokumentů, obvykle reprezentovaný několika jedinečnými nebo popisnými poli. Pokud je některý z výběrů platný, uživatel ho vybere a vrátí se odpovídající dokument. |
| Fasetová navigace | Na stránce se zobrazují odkazy s možností kliknutí nebo popis cesty, které zužují rozsah hledání. Fasetová navigační struktura se skládá dynamicky na základě počátečního dotazu. Pokud chcete například search=* naplnit fasetový navigační strom složený z každé možné kategorie. Fasetová navigační struktura se vytvoří z odpovědi dotazu, ale je to také mechanismus pro vyjádření dalšího dotazu. N Reference facets k rozhraní REST API je zdokumentovaný jako parametr dotazu operace Search Documents, ale dá se použít bez parametru search . |
| Metoda filtru | Filtry se používají s omezujícími vlastnostmi k zúžení výsledků. Můžete také implementovat filtr za stránkou, například inicializovat stránku pomocí polí specifických pro jazyk. V referenčních informacích $filter k rozhraní REST API je dokumentován jako parametr dotazu operace Search Documents, ale dá se použít bez parametru search . |
Vliv atributů pole na dotazy
Pokud znáte typy a složení dotazů, možná si pamatujete, že parametry požadavku na dotaz závisí na atributech polí v indexu. Například v dotazech a výsledcích hledání se dají použít jenom pole označená jako prohledávatelná a zobrazitelná . Při nastavování searchfilterparametrů a orderby parametrů v požadavku byste měli zkontrolovat atributy, abyste se vyhnuli neočekávaným výsledkům.
Na následujícím snímku obrazovky indexu hotels-sample jsou pouze poslední dvě pole LastRenovationDate a Ratingsortovatelná, což je požadavek pro použití v "$orderby" samotné klauzuli.
Definice atributů polí najdete v tématu Vytvoření indexu (REST API).
Účinek tokenů na dotazy
Během indexování používá vyhledávací web textový analyzátor řetězců k maximalizaci potenciálu hledání shody v době dotazu. Řetězce jsou minimálně převedeny na malá písmena, ale v závislosti na analyzátoru mohou také projít lematizací a odstraněním stop slov. Větší řetězce nebo složená slova se obvykle rozdělí pomocí prázdných znaků, spojovníků nebo pomlček a indexují se jako samostatné tokeny.
Klíčovým bodem je, že to, co si myslíte, že index obsahuje a co je ve skutečnosti v něm, se může lišit. Pokud dotazy nevrací očekávané výsledky, můžete zkontrolovat tokeny vytvořené analyzátorem prostřednictvím rozhraní REST API (Analyze Text). Další informace o tokenizaci a vlivu na dotazy naleznete v části Částečné hledání termínů a vzorů se speciálními znaky.
Odstraňování problémů s dotazy
Následující tabulka uvádí běžné problémy s dotazy a jejich řešení.
| Problém | Příčina | Řešení |
|---|---|---|
| Prázdné výsledky | Žádné dokumenty neodpovídají termíny dotazu. | Ověřte, že je pole označené jako prohledávatelné ve schématu. Ke kontrole tokenizace použijte rozhraní API pro analýzu textu . |
| Neočekávané výsledky | Dotaz odpovídá nezamýšleným polím. | Slouží searchFields k omezení, která pole se prohledávají. |
| Příliš mnoho výsledků | Dotaz je příliš široký. | Přidejte filtry, použijte searchMode=allnebo přidejte požadované termíny pomocí + operátoru. |
| Výsledky, které nejsou seřazené podle očekávání | Hodnocení relevance nesplňuje očekávání. | Zvažte bodování profilů nebo sémantického hodnocení. |
| Chybějící částečné shody | Analyzátor se tokenizoval jinak, než se čekalo. | Používejte zástupnou příponu (*) nebo zkontrolujte chování analyzátoru s využitím rozhraní API pro analýzu textu. |
| Filtr nefunguje | Pole není označené jako filtrovatelné. | Aktualizujte schéma indexu tak, aby se nastavil filterable: true v poli. |
Související obsah
Teď, když máte lepší přehled o tom, jak žádosti o dotazy fungují, vyzkoušejte následující rychlé starty pro praktické zkušenosti.