Megosztás a következőn keresztül:


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

Az Azure AI Searchben a typeahead vagy a "keresés önként" lehetőség engedélyezve van 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 seattle-i értékkel rendelkező mezőt tartalmazó city javaslattevők például tenger, ülés, ülés és seattl előtag kombinációival támogatják a típusfejlécet.

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.

A Typeahead használhatja az automatikus kiegészítést, amely részleges bemenetet ad egy teljes kifejezés lekérdezéséhez, vagy olyan javaslatokat, amelyek meghívják az adott egyezésre való kattintást. 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, és a tw-velfejeződik be. 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 Searchben 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 sztringmezők esetében a keresés mezőnként engedélyezve van. Mindkét típusfej viselkedést implementálhatja ugyanazon a keresési megoldáson belül, 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ők létrehozásának legjobb módja az, ha azt a mezőt is definiálja, amely azt használja.

  • Csak sztringmezőket használjon.

  • Ha a sztringmező egy összetett típus része (például egy Címen belüli Város mező), adja meg a szülőt a mező elérési útjában: "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": "en.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 a teljes kifejezések mellett jogkivonatosak. Mivel a meglévő mezők már jogkivonatosak, ú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 Searchben.

Mezők kiválasztása

Bár a javaslattevő számos tulajdonsággal rendelkezik, elsősorban sztringmezők gyűjteménye, amelyekhez ön által használt keresési felületet 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.

Ha a kereséssel kapcsolatos szolgáltatásokat is szeretné kielégíteni, adja hozzá az automatikus kiegészítéshez szükséges összes mezőt, majd használja selecta , topmajd filtera javaslatokat, és searchFields szabályozza a találatokat.

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, például a környezetfüggők esetében a nyelvelemző használata a következő jogkivonat-kombinációkat eredményezi: környezet, bizalmas, környezetfüggő. Ha a standard Lucene-elemzőt használta volna, az elválasztott sztring 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 sztringen a jogkivonat 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.

Feljegyzés

Ha az elemzők kényszere körül kell dolgoznia, például ha egy kulcsszó- vagy ngramelemzőre van szüksége bizonyos lekérdezési forgatókönyvekhez, két külön mezőt kell használnia ugyanahhoz a tartalomhoz. Ez lehetővé teszi, hogy az egyik mező javaslatot tegyen, míg a másik egyéni elemzőkonfigurációval állítható be.

Létrehozás az Azure Portal használatával

Amikor indexet hoz létre az Index hozzáadása vagy az Adatok importálása varázslóval, engedélyezheti a javaslattevőt:

  1. Az indexdefinícióban adja meg a javaslattevő nevét.

  2. Az új mezők egyes meződefinícióiban jelölje be a Jelölőnégyzet jelölőnégyzetet a Javaslattevő oszlopban. A jelölőnégyzet csak sztringmezőkön érhető el.

Ahogy korábban már említettük, az elemző választása hatással van a tokenizálásra és az előtagolásra. A javaslattevők engedélyezésekor vegye figyelembe a teljes meződefiníciót.

Létrehozás REST használatával

A REST API-ban adjon hozzá javaslattevőket az Index létrehozása vagy az Index frissítése funkcióval.

{
  "name": "hotels-sample-index",
  "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.
sourceFields 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 fájlban szereplő 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.
searchMode 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 analyzingInfixMatchinga mód támogatott, amely jelenleg egy kifejezés elején egyezik.

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=2024-07-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.