Szinonimák hozzáadása az Azure AI Searchben
Egy keresési szolgáltatás szinonimája megfelelteti a kifejezéseket, és anélkül bővíti a lekérdezés hatókörét, hogy a felhasználónak ténylegesen meg kellene adnia a kifejezést. Tegyük fel például, hogy a kutya, a kutya és a kiskutya szinonimákra van megfeleltetve, a kutya egyezéseinek lekérdezése egy kutyát tartalmazó dokumentumon. Több szinonimatérképet is létrehozhat különböző nyelvekhez, például angol és francia verziókhoz, illetve lexikonokat, ha a tartalom technikai zsargont, szlenget vagy homályos terminológiát tartalmaz.
A szinonimatérképek néhány fontos pontja:
- A szinonimák leképezése egy legfelső szintű erőforrás, amelyet egyszer lehet létrehozni, és számos index használhatja.
- A szinonimatérkép a sztringmezőkre vonatkozik.
- Szinonimák leképezését bármikor létrehozhatja és hozzárendelheti, az indexelés és a lekérdezések zavartalanul.
- A szolgáltatási szint határozza meg, hogy hány szinonimatérképet hozhat létre.
- A keresési szolgáltatás több szinonimatérképet is tartalmazhat, de egy indexen belül egy meződefiníció csak egy szinonimatérkép-hozzárendeléssel rendelkezhet.
Szinonimatérkép létrehozása
A szinonimatérképek névből, formátumból és szabályokból állnak, amelyek szinonimatérkép-bejegyzésekként működnek. Az egyetlen támogatott formátum az solr
, és a formátum határozza meg a solr
szabály felépítését.
Szinonimatérkép létrehozásához tegye ezt programozott módon. Az Azure Portal nem támogatja a szinonimatérkép-definíciókat.
Szinonimák térképének létrehozásához használja a Szinonimák létrehozása térképet (REST API).
POST /synonymmaps?api-version=2024-07-01
{
"name": "geo-synonyms",
"format": "solr",
"synonyms": "
USA, United States, United States of America\n
Washington, Wash., WA => WA\n"
}
Szabályok definiálása
A leképezési szabályok megfelelnek az Apache Solr nyílt forráskódú szinonimaszűrő-specifikációjának, amely a következő dokumentumban található: SynonymGraphFilter. A solr
formátum kétféle szabályt támogat:
egyenértékűség (ahol a kifejezések egyenlő helyettesítők a lekérdezésben)
explicit leképezések (ahol a kifejezések egy explicit kifejezésre vannak leképezve)
Minden szabályt az új vonal karakter (\n
) tagolt. Szinonimatérképenként legfeljebb 5000 szabályt definiálhat egy ingyenes szolgáltatásban, és térképenként 20 000 szabályt más szinteken. Minden szabály legfeljebb 20 bővítéssel vagy egy szabály elemeivel rendelkezhet. További információ: Szinonimák korlátai.
A lekérdezéselemzők automatikusan kisbetűsek a nagybetűs vagy vegyes kisbetűs kifejezéseknél. A sztring speciális karaktereinek (például vesszőnek vagy kötőjelnek) megőrzéséhez adja hozzá a megfelelő feloldó karaktereket a szinonimatérkép létrehozásakor.
Egyenértékűségi szabályok
Az egyenértékű kifejezésekre vonatkozó szabályok vesszősen vannak elválasztva ugyanazon a szabályon belül. Az első példában az USA-ra vonatkozó lekérdezés az USA-ra vagy "Egyesült Államok" VAGY "Amerika Egyesült Államok" kifejezésre bővül. Figyelje meg, hogy ha egy kifejezésen egyezni szeretne, akkor magának a lekérdezésnek idézőjelbe foglalt kifejezéses lekérdezésnek kell lennie.
Az egyenértékűségi esetben a kutya lekérdezése kibővíti a lekérdezést úgy, hogy a kutyus és a kutya is szerepeljen benne.
{
"format": "solr",
"synonyms": "
USA, United States, United States of America\n
dog, puppy, canine\n
coffee, latte, cup of joe, java\n"
}
Explicit leképezés
Az explicit leképezés szabályait egy nyíl =>
jelöli. Ha meg van adva, a keresési lekérdezések bal oldalának =>
megfelelő kifejezéssorozatot a jobb oldalon lévő alternatívák helyettesítik a lekérdezési időpontban.
A explicit esetben a Washington, a Wash. vagy a WA lekérdezése WA-ként van átírva, és a lekérdezési motor csak a WA kifejezésre keres egyezéseket. Az explicit leképezés csak a megadott irányba vonatkozik, és ebben az esetben nem írja át a WA lekérdezést Washingtonba.
{
"format": "solr",
"synonyms": "
Washington, Wash., WA => WA\n
California, Calif., CA => CA\n"
}
Speciális karakterek menekülése
A szinonimákat a lekérdezésfeldolgozás során ugyanúgy elemzi a rendszer, mint bármely más lekérdezési kifejezés, ami azt jelenti, hogy a fenntartott és a speciális karakterekre vonatkozó szabályok a szinonimák térképében szereplő kifejezésekre vonatkoznak. A menekülő karakterek listája az egyszerű szintaxis és a teljes szintaxis között változik:
-
egyszerű szintaxis
+ | " ( ) ' \
-
teljes szintaxis
+ - & | ! ( ) { } [ ] ^ " ~ * ? : \ /
Ha meg szeretné őrizni az alapértelmezett elemző által elvetett karaktereket, helyettesítse be azokat megőrző elemzőt. Egyes lehetőségek közé tartoznak a Microsoft természetes nyelvelemzői, amelyek megőrzik a kötőjeles szavakat, vagy egy egyéni elemzőt az összetettebb mintákhoz. További információ: Részleges kifejezések, minták és speciális karakterek.
Az alábbi példa egy példát mutat be arra, hogyan háríthat el egy karaktert fordított perjellel:
{
"format": "solr",
"synonyms": "WA\, USA, WA, Washington\n"
}
Mivel a fordított perjel maga egy speciális karakter más nyelvekben, például a JSON-ban és a C#-ban, valószínűleg meg kell szabadulnia belőle. Íme egy példa a JSON-ban:
{
"format":"solr",
"synonyms": "WA\\, USA, WA, Washington"
}
Szinonimatérképek kezelése
A szinonimatérképeket anélkül frissítheti, hogy megzavarná a lekérdezést és a számítási feladatokat. Ha azonban szinonimatérképet ad hozzá egy mezőhöz, ha ezután töröl egy szinonimatérképet, a szóban forgó mezőket tartalmazó lekérdezések 404-s hibával meghiúsulnak.
Szinonimák leképezésének létrehozása, frissítése és törlése mindig teljes dokumentumos művelet. A szinonimatérkép egyes részeit nem lehet növekményesen frissíteni vagy törölni. Ha egyetlen szabályt is frissít, újra kell betöltenie.
Szinonimák hozzárendelése mezőkhöz
A szinonimatérkép létrehozása után rendelje hozzá az index egy mezőjéhez. Szinonimák hozzárendeléséhez tegye ezt programozott módon. Az Azure Portal nem támogatja a szinonimák térképmező-társításait.
- Egy mezőnek típusnak
Edm.String
vagyCollection(Edm.String)
- Egy mezőnek rendelkeznie kell
"searchable":true
- Egy mező csak egy szinonimatérképet tartalmazhat
Ha a szinonimatérkép megtalálható a keresési szolgáltatásban, akkor a következő lekérdezésben lesz használva, nincs szükség újraindexelésre vagy újraépítésre.
A meződefiníció módosításához használja a Create or Update Indexet (REST API).
PUT /indexes?api-version=2024-07-01
{
"name":"hotels-sample-index",
"fields":[
{
"name":"description",
"type":"Edm.String",
"searchable":true,
"synonymMaps":[
"en-synonyms"
]
},
{
"name":"description_fr",
"type":"Edm.String",
"searchable":true,
"analyzer":"fr.microsoft",
"synonymMaps":[
"fr-synonyms"
]
}
]
}
Lekérdezés egyenértékű vagy megfeleltetett mezőkön
A szinonimák mezőhozzárendelése nem változtatja meg a lekérdezések írásának módját. A szinonimák hozzárendelése után az egyetlen különbség az, hogy ha egy lekérdezési kifejezés létezik a szinonimák térképén, a keresőmotor a szabálytól függően kibontja vagy újraírja a kifejezést vagy kifejezést.
Szinonimák használata a lekérdezés végrehajtása során
A szinonimák olyan lekérdezésbővítési technikák, amelyek egyenértékű kifejezésekkel kiegészítik az index tartalmát, de csak szinonima-hozzárendeléssel rendelkező mezők esetén. Ha egy mezőhatókörrel rendelkező lekérdezés kizár egy szinonima-kompatibilis mezőt, akkor a szinonimák leképezésében nem jelenik meg egyezés.
Szinonima-kompatibilis mezők esetén a szinonimákra ugyanaz a szövegelemzés vonatkozik, mint a társított mezőre. Ha például egy mezőt a standard Lucene-elemzővel elemeznek, a szinonimák kifejezései a standard Lucene-elemzőre is vonatkoznak a lekérdezési időpontban. Ha meg szeretné őrizni az írásjeleket( például pontokat vagy szaggatott kötőjeleket) a szinonimák kifejezésben, alkalmazzon egy tartalommegőrző elemzőt a mezőben.
A szinonimák funkció belsőleg újraírja az eredeti lekérdezést szinonimákkal az OR operátor használatával. Ezért a találatok kiemelési és pontozási profiljai egyenértékűként kezelik az eredeti kifejezést és szinonimákat.
A szinonimák csak a szabad formátumú szöveges lekérdezésekre vonatkoznak, és nem támogatottak szűrők, aspektusok, automatikus kiegészítés vagy javaslatok esetében. Az automatikus kiegészítés és javaslatok csak az eredeti kifejezésen alapulnak; szinonima egyezések nem jelennek meg a válaszban.
Ha fejlesztési (nem gyártási) környezetben rendelkezik meglévő indexel, kísérletezzen egy kis szótárral, hogy lássa, a szinonimák hozzáadása hogyan változtatja meg a keresési élményt, beleértve a pontozási profilokra gyakorolt hatást, a találatok kiemelését és a javaslatokat.
Helyettesítő karakterek keresése
A szinonimabővítések nem vonatkoznak a helyettesítő karakterek keresési kifejezésére; az előtag, a fuzzy és a regex kifejezés nem lesz kibontva.
Ha egyetlen lekérdezést kell végrehajtania, amely szinonimák kiterjesztését és helyettesítő karaktereket, regex vagy homályos kereséseket alkalmaz, kombinálhatja a lekérdezéseket az OR szintaxissal. Ha például a szinonimákat helyettesítő karakterekkel szeretné kombinálni az egyszerű lekérdezési szintaxishoz, a kifejezés a következő: <query> | <query>*
.