Javaslattevő konfigurálása automatikus kiegészítéshez és javaslatokhoz egy lekérdezésben

Megjegyzés

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Az Azure AI Keresésben a typeahead vagy a "gépelés közbeni keresés" be van kapcsolva egy javaslattevő használatával. A javaslattevő egy index konfigurációja, amely meghatározza, hogy mely mezőket kell használni az automatikus kiegészítés és a javasolt egyezések feltöltéséhez. Ezek a mezők extra tokenizáláson mennek keresztül, és előtagsorozatokat hoznak létre, amelyek támogatják a részleges feltételekkel való egyezéseket. Egy olyan javaslattevő, amely tartalmaz egy city mezőt a Seattle értékkel, előtag kombinációkkal, mint például sea, seat, seatt, és seattl, támogatja a beírás közbeni kiegészítést.

A részleges kifejezések egyezései lehetnek automatikusan kitöltött lekérdezések vagy javasolt egyezések. Ugyanaz a javaslattevő mindkét élményt támogatja.

Typeahead-élmények

Az Azure AI Keresés előnézete lehet automatikus kiegészítés, amely egy lekérdezés részleges bemenetét egy teljes kifejezéssé egészíti ki, vagy ajánlások, amelyek meghívást jelentenek egy adott egyezésre. Az automatikus kiegészítés létrehoz egy lekérdezést. A javaslatok egyező dokumentumot hoznak létre.

Az alábbi képernyőkép mindkettőt szemlélteti. Az automatikus kiegészítés egy lehetséges kifejezésre számít, befejezve twin-nel. A javaslatok a mini keresési eredmények, ahol egy mező, például hotel name egy megfelelő szállodai keresési dokumentumot jelöl az indexből. Javaslatok esetén bármely olyan mezőt felszínre helyezhet, amely leíró információkat tartalmaz.

Képernyőkép az automatikus kiegészítés és a javasolt lekérdezések vizuális összehasonlításáról.

Ezeket a funkciókat külön vagy együtt is használhatja. Ezeknek a viselkedéseknek az Azure AI Keresésben való implementálásához van egy index- és lekérdezésösszetevő.

  • Javaslattevő hozzáadása keresési index definícióhoz. A cikk további része egy javaslattevő létrehozására összpontosít.

  • Javaslattevő-kompatibilis lekérdezés meghívása javaslatkérés vagy automatikus kiegészítési kérelem formájában a Javaslat használata listában felsorolt API-k egyikével.

A keresés mezőnkénti engedélyezése a szövegmezők esetében történik. Mindkét előnézeti funkciót implementálhatja ugyanabban a keresési megoldásban, ha a képernyőképen láthatóhoz hasonló élményt szeretne. Mindkét kérés egy adott index dokumentumgyűjteményét célozza meg, és a válaszok akkor lesznek visszaadva, ha egy felhasználó legalább három karakterből álló bemeneti sztringet ad meg.

Javaslattevő létrehozása

Javaslattevő létrehozásához adjon hozzá egyet egy indexdefinícióhoz. A javaslattevők olyan nevet és mezők gyűjteményét használják, amelyeken engedélyezve van a típusfejléc használata. A javaslattevő létrehozásának legjobb ideje akkor van, amikor a használó mezőt is definiálják.

  • Csak sztringmezőket használjon.

  • Ha a karakterlánc mező egy összetett típus része (például egy Címen belüli Város mező), tartalmazza a szülőt a mező útvonalban: "Address/City" (REST, C# és Python) vagy ["Address"]["City"] (JavaScript).

  • Használja az alapértelmezett standard Lucene-elemzőt ("analyzer": null) vagy egy nyelvelemzőt (például "analyzer": "fr.microsoft") a mezőben.

Ha egy javaslattevőt próbál létrehozni az előző mezők használatával, az API letiltja azt. Az előtagok az indexelés során jönnek létre, amikor két vagy több karakterkombináció részleges kifejezései tokenizálva vannak a teljes kifejezések mellett. Mivel a meglévő mezők már tokenizáltak, újra kell építenie az indexet, ha hozzá szeretné adni őket egy javaslattevőhöz. További információ: Index frissítése vagy újraépítése az Azure AI Keresésben.

Mezők kiválasztása

Bár a javaslattevő rendszer számos tulajdonsággal rendelkezik, elsősorban karakterlánc mezők gyűjteménye, amelyeken gépelés közbeni keresési élményt engedélyez. Minden indexhez egy javaslatot kell tenni, ezért a javaslattevők listájának tartalmaznia kell az összes olyan mezőt, amely tartalommal járul hozzá mind a javaslatokhoz, mind az automatikus kiegészítéshez.

Az automatikus kiegészítés előnye, hogy egy nagyobb mezőkészletből kell kiindulni, mert a további tartalom több kifejezéskimeneti potenciállal rendelkezik.

A javaslatok viszont jobb eredményeket eredményeznek, ha a mezőválasztás szelektív. Ne feledje, hogy a javaslat egy keresési dokumentum proxyja, ezért válasszon olyan mezőket, amelyek a legjobban egy találatot jelölnek. A több egyezést megkülönböztető nevek, címek vagy egyéb egyedi mezők a legjobban működnek. Ha a mezők ismétlődő értékekből állnak, a javaslatok azonos eredményekből állnak, és a felhasználó nem tudja, melyiket válassza.

A mindkét keresés-közben-gépel-élmény kielégítése érdekében adja hozzá az összes szükséges mezőt az automatikus kiegészítéshez, majd használja a select, top, filter és searchFields címkéket a javaslatok eredményeinek szabályozásához.

Elemzők kiválasztása

Az elemző kiválasztása határozza meg a mezők tokenizálásának és előtagjának módját. Például egy kötőjeles sztring, mint például a környezetfüggő, a nyelvi elemző használata a következő token kombinációkat eredményezi: környezet, függő, környezetfüggő. Ha a standard Lucene-elemzőt használta volna, az elválasztott karakterlánc nem létezne.

Az elemzők kiértékelésekor fontolja meg az Analyze Text API használatát a kifejezések feldolgozásának elemzéséhez. Miután létrehoz egy indexet, kipróbálhat különböző elemzőket egy karakterláncon a tokén kimenetének megtekintéséhez.

Az egyéni elemzőket vagy beépített elemzőket használó mezők (a standard Lucene kivételével) kifejezetten nem engedélyezettek a gyenge eredmények elkerülése érdekében.

Megjegyzés

Amennyiben meg kell kerülnie az elemző korlátozását, például ha kulcsszó- vagy ngram-elemzőre van szüksége bizonyos lekérdezési forgatókönyvekhez, két külön mezőt kell használni ugyanannak a tartalomnak. Ez lehetővé teszi, hogy az egyik mező javaslatot tegyen, míg a másik egyéni elemzőkonfigurációval állítható be. Ha indexelőt használ, a forrásmezőket két különböző indexmezőhöz rendelheti, hogy több konfigurációt is támogatjon.

Azure portal használatával történő létrehozás

Az Azure Portalon megadhat egy javaslattevőt, amikor az Index hozzáadása lehetőséget választja.

  1. Válassza az Index hozzáadása lehetőséget, és adjon hozzá egy sztringmezőt.
  2. A kereshető mező hozzárendelésének beállítása.
  3. Válasszon ki egy elemzőt.
  4. A mezők meghatározása után válassza az Automatikus kiegészítés beállításai lehetőséget.
  5. Jelölje ki azokat a kereshető sztringmezőket, amelyekhez engedélyezni szeretné az automatikus kiegészítési felületet.

Hozzon létre REST használatával

A REST API-ban adjon hozzá javaslattevőket az Index létrehozásával.

{
  "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": [
    . . .
  ]
}

Létrehozás a .NET használatával

A C#-ban definiáljon egy SearchSuggester objektumot. Suggesters Egy SearchIndex-objektum gyűjteménye, de csak egy elemet vehet igénybe. Adjon hozzá egy javaslatot az indexdefinícióhoz.

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);
}

Tulajdonsághivatkozás

Tulajdonság Leírás
név A javaslattevő definíciójában van megadva, de automatikus kiegészítési vagy javaslatkérést is kért.
forrásmezők A javaslattevő definíciójában van megadva. Ez az index egy vagy több olyan mezőjének listája, amely a tartalom forrása a javaslatokhoz. A mezőknek típusnak Edm.Stringkell lenniük. Ha egy elemző van megadva a mezőben, akkor a LexicalAnalyzerName Struct-ban felsorolt nevesített lexikális elemzőnek kell lennie (nem egyéni elemzőnek).

Ajánlott eljárásként csak azokat a mezőket adja meg, amelyek a várt és megfelelő választ adják meg, függetlenül attól, hogy egy keresősávban vagy egy legördülő listában befejezett sztringről van-e szó.

A szálloda neve jó jelölt, mert precizitással rendelkezik. A részletes mezők, például a leírások és a megjegyzések túl sűrűek. Hasonlóképpen az ismétlődő mezők, például kategóriák és címkék kevésbé hatékonyak. A példákban kategória is szerepel, amely azt mutatja be, hogy több mezőt is felvehet.
keresési mód CSAK REST paraméter, de az Azure Portalon is látható. Ez a paraméter nem érhető el a .NET SDK-ban. A jelölt kifejezések keresésére használt stratégiát jelzi. Jelenleg csak az analyzingInfixMatching mód támogatott, amely a kifejezés elejére illeszkedik.

Javaslattevő használata

A rendszer egy javaslattevőt használ egy lekérdezésben. A javaslattevő létrehozása után hívja meg az alábbi API-k egyikét, hogy ön által használt keresési élményt nyújtsunk:

Egy keresőalkalmazásban az ügyfélkódnak egy olyan kódtárat kell használnia, mint a jQuery felhasználói felület automatikus kiegészítése a részleges lekérdezés összegyűjtéséhez és az egyezés megadásához. A feladatról további információt az Automatikus kiegészítés vagy javasolt eredmények hozzáadása az ügyfélkódhoz című témakörben talál.

Az API-használatot az automatikus kiegészítési REST API következő hívása szemlélteti. Ebből a példából két lehetőség van. Először is, mint minden lekérdezés esetében, a művelet egy index dokumentumgyűjteményén van, és a lekérdezés tartalmaz egy paramétert search , amely ebben az esetben a részleges lekérdezést biztosítja. Másodszor, hozzá kell adnia suggesterName a kéréshez. Ha egy javaslattevő nincs definiálva az indexben, az automatikus kiegészítésre irányuló hívások vagy javaslatok sikertelenek.

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

Mintakód

Ha tudni szeretné, hogyan használhat nyílt forráskód Javaslatcsomagot az ügyfélalkalmazás részleges befejezéséhez, tekintse meg a .NET keresési kódját.

Következő lépés

További információ a kérések megfogalmazásáról.