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.
Typeahead-élmények az Azure AI Searchben
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.
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 select
a , top
majd filter
a 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:
Az indexdefinícióban adja meg a javaslattevő nevét.
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.String kell 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 analyzingInfixMatching a 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.