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 přiřazenými jako searchable.

  • 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í výše uvedených parametrů.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2023-11-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 v schématu indexu přiřazeno jako prohledávatelné, je kandidátem pro tento parametr.

  • queryType nastaví analyzátor: simple, full. 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 pro semanticsé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ňuje přesnost) nebo "jakákoli" kritéria (upřednostňuje úplnost) ve výrazu. Výchozí hodnota je any. Pokud očekáváte velké použ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 "zobrazitelná" 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 jako "seřazené", aby bylo možné ho použít jako kandidáta na 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 klientské knihovny Azure.Document.Search v sadách Azure SDK pro .NET, Java, JavaScript a Python.

Když otevřete index, můžete na portálu pracovat s Průzkumníkem služby Search společně s definicí JSON indexu na souběžných kartách, 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. Otevřete indexy a vyberte 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ěď:

    Screenshot of Search Explorer with a full text query.

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 jsou k dispozici další operátory logických výrazů 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 kliknutím na Tlačítko Hledat 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 kliknutím na tlačítko Hledat 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 jsou některé z výběrů platné, uživatel na některý z nich klikne 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 pouze pole označená jako searchable a retrievable dají se použít v dotazech a výsledcích hledání. 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 portálu ukázkového indexu hotelů jsou sortablev "$orderby" klauzuli pouze poslední dvě pole LastRenovationDate a Rating.

Index definition for the hotel sample

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.

Tady je 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 dopadu na dotazy naleznete v části Částečné hledání termínů a vzorů 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 pro praktické zkušenosti.