Nakonfigurovat doporučovač pro automatické dokončování a návrhy v dotazu

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.

Ve službě Azure AI Vyhledávač je funkce typeahead nebo "search-as-you-type" povolená pomocí indikátoru. Navrhovatel je konfigurace v indexu, která určuje, která pole se mají použít k naplnění automatického dokončování a doporučených shod. Tato pole procházejí dodatečnou tokenizací a generují předponové sekvence pro podporu shod pro částečné termíny. Například navrhovač, který obsahuje city pole s hodnotou pro Seattle, má kombinace předpon sea, seat, seatt a seattl pro podporu automatického doplňování.

Shoda s částečnými termíny může být buď automaticky dokončený dotaz, nebo navrhovaná shoda. Stejný sugestivní modul podporuje obě prostředí.

Prostředí pro psaní textu

Typeahead ve službě Azure AI Vyhledávač může být buď automatické dokončování, které dokončí částečný vstup pro celý dotaz termínu, nebo návrhy , které pozvou kliknutí na určitou shodu. Automatické dokončování vytvoří dotaz. Návrhy vytvoří odpovídající dokument.

Následující snímek obrazovky ilustruje obojí. Automatické dokončování předpokládá potenciální termín a dokončuje tw s in. Návrhy jsou mini výsledky hledání, kde pole jako hotel name představuje odpovídající hotelový vyhledávací dokument z indexu. V případě návrhů můžete zobrazit libovolné pole, které poskytuje popisné informace.

Snímek obrazovky znázorňující vizuální porovnání automatického dokončování a navrhovaných dotazů

Tyto funkce můžete používat samostatně nebo společně. K implementaci těchto chování ve službě Azure AI Vyhledávač existuje součást indexu a dotazu.

  • Přidejte do definice indexu vyhledávání návrhy. Zbývající část tohoto článku se zaměřuje na vytvoření doporučovače.

  • Zavolejte dotaz s povoleným doporučováním ve formě žádosti o návrh nebo automatického dokončování pomocí některého z rozhraní API uvedených v Použijte suggester.

Funkce vyhledávání při psaní je povolena na úrovni jednotlivých polí pro pole řetězců. Pokud chcete zážitek podobný tomu na snímku obrazovky, můžete implementovat obě funkcionality automatického doplňování ve stejném vyhledávacím řešení. Oba požadavky cílí na kolekci dokumentů určitého indexu a odpovědi se vrátí poté, co uživatel poskytne alespoň tříznakový vstupní řetězec.

Jak vytvořit návrhový systém

Pokud chcete vytvořit navrhovač, přidejte ho do definice indexu. Navrhovač přebírá název a kolekci polí, u kterých je povolené prostředí pro psaní. Nejlepší čas k vytvoření navrhovače je, když definujete také pole, které ho používá.

  • Používejte pouze pole řetězců.

  • Pokud je pole řetězce součástí komplexního typu (například pole Město v rámci Adresy), zahrňte nadřazený objekt do cesty k poli: "Address/City" (REST, C# a Python) nebo ["Address"]["City"] (JavaScript).

  • V poli použijte výchozí standardní analyzátor Lucene ("analyzer": null) nebo analyzátor jazyka (například "analyzer": "fr.microsoft").

Pokud se pokusíte vytvořit modul pro návrhy pomocí předexistujících polí, rozhraní API ho zakáže. Předpony se generují během indexování, pokud jsou částečné termíny ve dvou nebo více kombinacích znaků tokenizovány společně s celými termíny. Vzhledem k tomu, že existující pole jsou již tokenizována, je nutné znovu sestavit index, pokud je chcete přidat do sugestivního modulu. Další informace najdete v tématu Aktualizace nebo opětovné sestavení indexu ve službě Azure AI Vyhledávač.

Zvolit pole

I když má navrhovač několik vlastností, jedná se primárně o kolekci řetězcových polí, pro která povolujete vyhledávání při psaní. Pro každý index existuje jeden navrhovatel, takže seznam navrhovatelů musí obsahovat všechna pole, která přispívají obsahem pro návrhy a automatické doplňování.

Automatické dokončování těží z většího množství dostupných polí, protože jejich větší počet zvyšuje potenciál pro dokončení termínů.

Návrhy na druhou stranu generují lepší výsledky, když je výběr pole selektivní. Mějte na paměti, že návrh je proxy pro vyhledávací dokument, takže vyberte pole, která nejlépe představují jeden výsledek. Názvy, tituly nebo jiná jedinečná pole, která rozlišují mezi více shodami, fungují nejlépe. Pokud se pole skládají z opakujících se hodnot, návrhy se skládají z identických výsledků a uživatel nebude vědět, který z nich zvolit.

Pokud chcete splňovat možnosti hledání při psaní, přidejte všechna pole, která potřebujete pro automatické dokončování, ale pak použijte select, top, filtera searchFields k řízení výsledků pro návrhy.

Volba analyzátorů

Volba analyzátoru určuje, jak se pole tokenizují a mají předponu. Například pro řetězec s dělením slov, jako je kontextově citlivý, při použití jazykového analyzátoru jsou výsledkem tyto kombinace tokenů: kontext, citlivý, kontextově citlivý. Kdybyste použili standardní analyzátor Lucene, řetězec s pomlčkami by neexistoval.

Při vyhodnocování analyzátorů zvažte použití Analyze Text API pro pochopení způsobu zpracování termínů. Jakmile vytvoříte index, můžete zkusit různé analyzátory řetězce a zobrazit výstup tokenu.

Pole, která používají vlastní analyzátory nebo integrované analyzátory (s výjimkou standardních Lucene), jsou explicitně zakázána, aby se zabránilo špatným výsledkům.

Poznámka:

Pokud potřebujete obejít omezení analyzátoru, například pokud potřebujete analyzátor klíčových slov nebo ngramů pro určité scénáře dotazů, měli byste pro stejný obsah použít dvě samostatná pole. To umožňuje, aby jedno z polí mělo navrhovač, zatímco druhá se dá nastavit pomocí vlastní konfigurace analyzátoru. Pokud používáte indexer, můžete zdrojové pole namapovat na dvě různá indexová pole, aby podporovalo více konfigurací.

Vytvoření pomocí portálu Azure

Na webu Azure Portal můžete při výběru možnosti Přidat index zadat sugestor.

  1. Vyberte Přidat index a přidejte pole řetězce.
  2. Nastavte atribuci pole tak, aby bylo možné prohledávat.
  3. Vyberte analyzátor.
  4. Po definování polí vyberte nastavení automatického dokončování.
  5. Vyberte vyhledávací řetězcová pole, pro která chcete povolit automatické dokončování.

Vytvoření pomocí REST

V rozhraní REST API přidejte návrhy pomocí příkazu Vytvořit index.

{
  "name": "hotels-sample",
  "fields": [
    . . .
        {
            "name": "HotelName",
            "type": "Edm.String",
            "facetable": false,
            "filterable": false,
            "key": false,
            "retrievable": true,
            "searchable": true,
            "sortable": false,
            "analyzer": "en.microsoft",
            "indexAnalyzer": null,
            "searchAnalyzer": null,
            "synonymMaps": [],
            "fields": []
        },
  ],
  "suggesters": [
    {
      "name": "sg",
      "searchMode": "analyzingInfixMatching",
      "sourceFields": ["HotelName"]
    }
  ],
  "scoringProfiles": [
    . . .
  ]
}

Vytvoření pomocí .NET

V jazyce C# definujte objekt SearchSuggester. Suggesters je kolekce v objektu SearchIndex, ale může mít pouze jednu položku. Přidejte do definice indexu modul pro návrhy.

private static void CreateIndex(string indexName, SearchIndexClient indexClient)
{
    FieldBuilder fieldBuilder = new FieldBuilder();
    var searchFields = fieldBuilder.Build(typeof(Hotel));

    var definition = new SearchIndex(indexName, searchFields);

    var suggester = new SearchSuggester("sg", new[] { "HotelName", "Category", "Address/City", "Address/StateProvince" });
    definition.Suggesters.Add(suggester);

    indexClient.CreateOrUpdateIndex(definition);
}

Referenční vlastnost

Vlastnost Popis
název Zadané v definici navrhovatele, ale také vyvolán na požadavek na automatické dokončování nebo návrhy.
zdrojováPole Zadané v definici navrhovatele. Jedná se o seznam jednoho nebo více polí v indexu, která jsou zdrojem obsahu pro návrhy. Pole musí být typu Edm.String. Pokud je v poli zadán analyzátor, musí se jednat o pojmenovaný lexikální analyzátor uvedený ve struktuře LexicalAnalyzerName (ne vlastní analyzátor).

Osvědčeným postupem je zadat pouze pole, která se hodí k očekávané a vhodné odpovědi, ať už se jedná o dokončený řetězec na panelu hledání nebo v rozevíracím seznamu.

Název hotelu je dobrý kandidát, protože má přesnost. Podrobná pole, jako jsou popisy a komentáře, jsou příliš hustá. Podobně jsou opakující se pole, jako jsou kategorie a značky, méně efektivní. V příkladech přesto zahrneme kategorii , která vám ukáže, že můžete zahrnout více polí.
režim vyhledávání Parametr pouze REST, ale také viditelný na webu Azure Portal. Tento parametr není k dispozici v sadě .NET SDK. Označuje strategii použitou k vyhledání kandidátských frází. Jediný aktuálně podporovaný režim je analyzingInfixMatching, který se aktuálně shoduje na začátku termínu.

Použijte navrhovač

V dotazu se používá modul pro návrhy. Po vytvoření doporučovače zavolejte jedno z následujících rozhraní API pro vyhledávání v reálném čase při psaní.

Ve vyhledávací aplikaci by klientský kód měl použít knihovnu, jako je automatické dokončování uživatelského rozhraní jQuery, ke shromáždění částečného dotazu a poskytnutí shody. Další informace o této úloze najdete v tématu Přidání automatického dokončování nebo navrhovaných výsledků do kódu klienta.

Použití API je znázorněno v následujícím volání Autocomplete REST API. V tomto příkladu existují dvě poznatky. Za prvé, stejně jako u všech dotazů, je operace proti kolekci dokumentů indexu a dotaz obsahuje search parametr, který v tomto případě poskytuje částečný dotaz. Za druhé, musíte do požadavku přidat suggesterName . Pokud není v indexu definován navrhovací modul, volání automatického dokončování nebo návrhů selžou.

POST /indexes/myxboxgames/docs/autocomplete?search&api-version=2026-04-01
{
  "search": "minecraf",
  "suggesterName": "sg"
}

Ukázkový kód

Informace o použití balíčku Návrhy open source k částečnému dokončování termínů v klientské aplikaci najdete v tématu Prozkoumání kódu vyhledávání .NET.

Další krok

Přečtěte si další informace o formulaci žádosti.