Sdílet prostřednictvím


Vytvoření fulltextového dotazu ve službě Azure AI Search

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

  • Index vyhledávání s řetězcovými poli, která jsou označená jako prohledávatelná.

  • Oprávnění ke čtení indexu vyhledávání Pokud chcete získat přístup ke čtení, zahrňte do požadavku klíč rozhraní API dotazu nebo udělte volajícímu oprávnění Čtenář dat indexu vyhledávání.

Příklad požadavku na fulltextový dotaz

Ve službě Azure AI Search 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 pomocí uvedených parametrů.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-07-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
}

Klíčové body

  • search poskytuje kritéria shody, obvykle celé termíny nebo fráze, s operátory nebo bez. Každé pole, které je přiřazeno jako prohledávatelné ve schématu indexu, je kandidátem pro tento parametr.

  • queryType nastaví 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í bezkontaktní komunikace, 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.

  • searchMode určuje, zda jsou shody založeny na všech kritériích (upřednostňují přesnost) nebo všechna kritéria (upřednostnění odvolá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 parametrem searchMode=Any|All a vyhodnotit dopad tohoto nastavení na logické vyhledávání.

  • searchFields omezuje 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:

  • select urč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.

  • top vrátí zadaný počet nejlepších dokumentů. V tomto příkladu se vrátí pouze 10 přístupů. K zobrazení výsledků můžete použít horní a přeskočte (nezobrazuje se).

  • count vám řekne, kolik dokumentů v celém indexu odpovídá celkově, což může být větší, než kolik se vrátí.

  • orderby se 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 přiřazeno tak , aby bylo možné řadit jako kandidáta pro tento parametr.

Volba klienta

V případě počátečního vývoje a testování konceptu začněte s webem Azure Portal nebo klientem REST. Oba 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 Azure.Document.Search klientské knihovny v sadách Azure SDK pro .NET, Javu, JavaScript a Python.

Když otevřete index, můžete na webu Azure Portal pracovat s Průzkumníkem služby Search společně s definicí JSON indexu na kartách vedle sebe, abyste měli snadný přístup k atributům polí. V tabulce Pole zkontrolujte, které z nich se při testování dotazů dají prohledávat, řadit, filtrovat a fasetizovat.

  1. Přihlaste se k webu Azure Portal a vyhledejte vyhledávací službu.

  2. Ve službě vyberte Indexy a zvolte index.

  3. 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 ukázkový index Hotels:

       {
           "search": "pool spa +airport",
           "queryType": "simple",
           "searchMode": "any",
           "searchFields": "Description, Tags",
           "select": "HotelName, Description, Tags",
           "top": 10,
           "count": true
       }
    

    Následující snímek obrazovky znázorňuje dotaz a odpověď:

    Snímek obrazovky Průzkumníka služby Search s fulltextovým dotazem

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 Search nabízí dva analyzátory dotazů.

Ú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ů. V plném rozsahu existuje více 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í bezkontaktní komunikace 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 Prostředí
Metoda vyhledávání Uživatel zadá termíny nebo fráze do vyhledávacího pole s operátory nebo bez a vybere Možnost Hledat a odešle požadavek. Hledání se dá použít 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 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 možnost Hledat a odešle tento dotaz do služby.
Metoda Návrhy Stejně jako u automatického dokončování se generuje několik znaků a přírůstkové dotazy. 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 například search=* chcete 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 ukázkového indexu hotelů jsou seřazená pouze poslední dvě pole LastRenovationDate a Rating, a to požadavek na použití v "$orderby" jediné klauzuli.

Snímek obrazovky znázorňující definici indexu pro ukázku hotelu

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ě malé a malá písmena, ale v závislosti na analyzátoru můžou také projít lemmatizace a zastavit odebrání slova. 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.

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.