Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
A Azure AI Keresés normalizáló olyan összetevő, amely előre feldolgozza a kulcsszóegyezés szövegét a "szűrhető", "facetable" vagy "rendezhető" mezőkre. A szövegelemzőkkel párosított teljes szöveges "kereshető" mezőkkel ellentétben a szűrési szempontú rendezési műveletekhez létrehozott tartalom nem végez elemzést vagy tokenizálást. A szövegelemzés kihagyása váratlan eredményeket eredményezhet, ha a burkolat és a karakterkülönbségek megjelennek, ezért van szükség normalizálóra a tartalom variációinak homogenizálásához.
Normalizáló alkalmazásával olyan világos szövegátalakításokat érhet el, amelyek javítják az eredményeket:
- Konzisztens betűhasználat (például kisbetűs vagy nagybetűs)
- A mellékjelek és ékezetek, mint az ö vagy ê, ASCII-ekvivalens "o" és "e" karakterekre történő normalizálása.
- Karakterek leképezése egy
-felhasználó által megadott karakterre
A normalizálók előnyei
A dokumentumok keresési indexből való kereséséhez és lekéréséhez a lekérdezés bemenetének és a dokumentum tartalmának kell megfelelnie. Az egyeztetés vagy jogkivonatos tartalomon keresztül történik, ahogyan a "keresés" meghívásakor, vagy nem jogkivonatos tartalomon keresztül, ha a kérés szűrő, aspektus vagy rendezési művelet.
Mivel a nem jogkivonatos tartalmakat sem elemzi a rendszer, a rendszer a tartalom kis eltéréseit eltérő értékként értékeli ki. Vegye figyelembe a következő példákat:
$filter=City eq 'Las Vegas'csak a pontos szöveget"Las Vegas"tartalmazó dokumentumokat adja vissza, és kizárja azokat a dokumentumokat"LAS VEGAS""las vegas", amelyek nem megfelelőek, ha a használati esethez az összes dokumentumra szükség van a burkolattól függetlenül.search=*&facet=City,count:5vissza fog térni"Las Vegas","LAS VEGAS"és"las vegas"eltérő értékekként annak ellenére, hogy ugyanaz a város.search=usa&$orderby=Citylexikális sorrendben adja vissza a városokat:"Las Vegas","Seattle","las vegas", még akkor is, ha a szándék az, hogy ugyanazon városokat az esettől függetlenül együtt rendezze.
Az indexelés és a lekérdezés végrehajtása során meghívott normalizáló olyan világos átalakításokat ad hozzá, amelyek kisimítják a szöveg kisebb eltéréseit a szűrési, aspektus- és rendezési forgatókönyvek esetében. Az előző példákban a variánsok "Las Vegas" a kiválasztott normalizáló szerint lesznek feldolgozva (például az összes szöveg kisbetűs) az egységesebb eredmények érdekében.
Normalizer megadása
A normalizálók egy indexdefinícióban mezőnként vannak megadva olyan szövegmezőkön (Edm.String és Collection(Edm.String)), amelyeknél a "szűrhető", "rendezhető" vagy "facetable" tulajdonságok közül legalább egy igaz. A normalizáló beállítása nem kötelező, és alapértelmezés szerint null értékű. Javasoljuk, hogy egyéni konfigurálás előtt értékelje ki az előre definiált normalizálókat.
A normalizálók csak akkor adhatók meg, ha új mezőt ad hozzá az indexhez, ezért ha lehetséges, próbálja meg előre felmérni a normalizálási igényeket, és normalizálókat rendeljen a fejlesztés kezdeti fázisaihoz az indexek elvetésekor és újraértékelésekor.
Amikor meződefiníciót hoz létre az indexben, állítsa a "normalizer" tulajdonságot az alábbi értékek egyikére: egy előre definiált normalizálóra , például "kisbetűre" vagy egyéni normalizálóra (ugyanabban az indexsémában definiálva).
"fields": [ { "name": "Description", "type": "Edm.String", "retrievable": true, "searchable": true, "filterable": true, "analyzer": "en.microsoft", "normalizer": "lowercase" ... } ]Az egyéni normalizálók először az index "normalizers" szakaszában vannak definiálva, majd hozzá vannak rendelve a meződefinícióhoz az előző lépésben látható módon. További információ: Index létrehozása és egyéni normalizálók hozzáadása.
"fields": [ { "name": "Description", "type": "Edm.String", "retrievable": true, "searchable": true, "analyzer": null, "normalizer": "my_custom_normalizer" },
Megjegyzés
Egy meglévő mező normalizálójának módosításához az indexet teljesen újra kell építeni (nem lehet újraépíteni az egyes mezőket).
A termelési indexek esetében, ahol az indexek újraépítése nagy költséggel jár, jó megoldás, ha létrehoz egy új mezőt, amely azonos a régivel, de az új normalizálót használva, és a régi helyett ezt használja. Az Index frissítése funkcióval beépítheti az új mezőt, és a mergeOrUpload segítségével feltöltheti azt. Később a tervezett indexkarbantartás részeként törölheti az indexet az elavult mezők eltávolításához.
Előre definiált és egyéni normalizálók
Azure AI Keresés beépített normalizálókat biztosít a gyakori használati esetekhez, valamint igény szerint testre szabható.
| Kategória | Leírás |
|---|---|
| Előre definiált normalizálók | Alapértelmezettként elérhető, és konfiguráció nélkül is használható. |
| Egyéni normalizálók1 | Speciális forgatókönyvek esetén. A meglévő elemek kombinációjának felhasználó által definiált konfigurációját igényli, amely karakter- és token-szűrőkből áll. |
(1) Az egyéni normalizálók nem adnak meg tokenizálókat, mivel a normalizálók mindig egyetlen tokent hoznak létre.
Normalizáló tesztelése
A Test Analyzer (REST) segítségével megtekintheti, hogyan dolgoz fel egy normalizáló egy bemenetet.
Kérés
POST https://[search service name].search.windows.net/indexes/[index name]/analyze?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
{
"normalizer":"asciifolding",
"text": "Vis-à-vis means Opposite"
}
Válasz
HTTP/1.1 200 OK
{
"tokens": [
{
"token": "Vis-a-vis means Opposite",
"startOffset": 0,
"endOffset": 24,
"position": 0
}
]
}
Normalizálók hivatkozása
Előre definiált normalizálók
| Név | Leírás és beállítások |
|---|---|
| szabvány | A szöveget kisbetűssé alakítja, amit az asciifolding eljárás követ. |
| kisbetűs | Kisbetűssé alakítja a karaktereket. |
| nagybetűs | A karaktereket nagybetűssé alakítja. |
| asciifolding | Az egyszerű latin Unicode-blokkban nem szereplő karaktereket ASCII-ekvivalenssé alakítja át, ha létezik ilyen. Például a à-t váltsuk a-re. |
| elízió | Eltávolítja az elíziót az elemek elejéről. |
Támogatott karakterszűrők
A normalizálók két olyan karakterszűrőt támogatnak, amelyek megegyeznek az egyéni elemző karakterszűrőkben lévő megfelelőkkel:
Támogatott token szűrők
Az alábbi listában a normalizálók által támogatott jogkivonatszűrők láthatók, és az egyéni elemzőkben használt teljes jogkivonatszűrők részhalmaza.
- arabic_normalization
- asciifolding
- cjk_width
- elízió
- német_normalizáció
- hindi_normalization
- indic_normalization
- persian_normalization
- skandináv_normalizálás
- scandinavian_folding
- sorani_normalization
- Kisbetűs
- Nagybetűs
Egyéni normalizálók hozzáadása
Az egyéni normalizálók az indexsémán belül vannak definiálva. A definíció tartalmaz egy nevet, egy típust, egy vagy több karakterszűrőt és tokenszűrőt. A karakterszűrők és a token szűrők az egyéni normalizáló alapelemei, és felelősek a szöveg feldolgozásáért. Ezek a szűrők balról jobbra vannak alkalmazva.
A token_filter_name_1 jogkivonat-szűrő neve, és char_filter_name_1char_filter_name_2 a karakterszűrők neve (az érvényes értékekért lásd alább a támogatott jogkivonatszűrőket és a támogatott karakterszűrőkettartalmazó táblázatokat).
"normalizers":(optional)[
{
"name":"name of normalizer",
"@odata.type":"#Microsoft.Azure.Search.CustomNormalizer",
"charFilters":[
"char_filter_name_1",
"char_filter_name_2"
],
"tokenFilters":[
"token_filter_name_1"
]
}
],
"charFilters":(optional)[
{
"name":"char_filter_name_1",
"@odata.type":"#char_filter_type",
"option1": "value1",
"option2": "value2",
...
}
],
"tokenFilters":(optional)[
{
"name":"token_filter_name_1",
"@odata.type":"#token_filter_type",
"option1": "value1",
"option2": "value2",
...
}
]
Az egyéni normalizálók hozzáadhatók az index létrehozásakor vagy később egy meglévő frissítésével. Ha egyéni normalizálót ad hozzá egy meglévő indexhez, az "allowIndexDowntime" jelzőt meg kell adni az Update Indexben , és az index néhány másodpercig elérhetetlenné válik.
Egyéni normalizáló példa
Az alábbi példa egy egyéni normalizáló definíciót mutat be a megfelelő karakterszűrőkkel és token szűrőkkel. A karakterszűrők és a jogkivonatszűrők egyéni beállításai nevesített szerkezetként vannak megadva, majd a normalizáló definícióban az alább látható módon hivatkoznak rá.
A "my_custom_normalizer" nevű egyéni normalizáló az indexdefiníció "normalizers" szakaszában van definiálva.
A normalizáló két karakterszűrőből és három token szűrőből áll: elision, kisbetűs átalakító és testre szabott asciifolding szűrő, "my_asciifolding".
Az első karakterszűrő "map_dash" aláhúzásjelekre cseréli az összes kötőjelet, míg a második "remove_whitespace" eltávolítja az összes szóközt.
{
"name":"myindex",
"fields":[
{
"name":"id",
"type":"Edm.String",
"key":true,
"searchable":false,
},
{
"name":"city",
"type":"Edm.String",
"filterable": true,
"facetable": true,
"normalizer": "my_custom_normalizer"
}
],
"normalizers":[
{
"name":"my_custom_normalizer",
"@odata.type":"#Microsoft.Azure.Search.CustomNormalizer",
"charFilters":[
"map_dash",
"remove_whitespace"
],
"tokenFilters":[
"my_asciifolding",
"elision",
"lowercase",
]
}
],
"charFilters":[
{
"name":"map_dash",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":["-=>_"]
},
{
"name":"remove_whitespace",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":["\\u0020=>"]
}
],
"tokenFilters":[
{
"name":"my_asciifolding",
"@odata.type":"#Microsoft.Azure.Search.AsciiFoldingTokenFilter",
"preserveOriginal":true
}
]
}
Lásd még:
Fogalmak lekérdezése az Azure AI Keresés