Javaslattevő konfigurálása automatikus kiegészítéshez és javasolt egyezésekhez egy lekérdezésben
Az Azure AI Searchben a typeahead (automatikus kiegészítés) vagy az "öntípusos keresés" engedélyezve van egy javaslattevőn keresztül. A javaslattevő egy index konfigurációja, amely meghatározza, hogy mely mezőket kell használni az automatikus kiegészítés és javaslatok 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. Például egy "Seattle" értékkel rendelkező City mezőt tartalmazó javaslattevő előtagjai a "tenger", az "ülés", a "seatt" és a "seattl" előtagot tartalmazzák a typeahead támogatásához.
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 lehet automatikus kiegészítés, amely egy teljes kifejezés lekérdezésének részleges bemenetét, illetve az adott egyezésre kattintást meghívó javaslatokat hajtja végre. 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" kifejezés "in" kifejezéssel fejeződik be. A javaslatok a mini keresési eredmények, ahol egy mező, például a szálloda neve 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 későbbi szakaszban 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, és a válaszok akkor lesznek visszaadva, ha egy felhasználó legalább három karakteres beviteli 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 és 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 már meglévő mezők használatával próbál javaslattevőt létrehozni, 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ó: Azure AI Search-index újraépítése.
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örnyezetérzékeny" esetében a nyelvelemző használata a következő jogkivonat-kombinációkat eredményezi: "context", "sensitive", "context-sensitive". 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ő rendelkezzen javaslattevővel, a másik pedig egyéni elemzőkonfigurációval.
Létrehozás a portál 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 szolgáltatással.
{
"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
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:
- Javaslatok REST API
- REST API automatikus kiegészítése
- SuggestAsync metódus
- AutocompleteAsync metódus
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
- Keresés hozzáadása egy webhelyhez (C#) egy nyílt forráskód Javaslatcsomagot használ az ügyfélalkalmazás részleges befejezéséhez.
Következő lépések
További információ a kérésekről\ megfogalmazás.