Szinonimák az Azure AI Searchben
A keresési szolgáltatás szinonimái olyan globális erőforrások, amelyek egyenértékű kifejezéseket társítanak, és kibővítik a lekérdezés hatókörét anélkül, hogy a felhasználónak ténylegesen meg kellene adnia a kifejezést. Ha például feltételezzük, hogy a "kutya", a "kutya" és a "kiskutya" szinonimák, a "kutya" lekérdezés egyezik a "kutya" dokumentumon.
Szinonimák létrehozása
A szinonimák leképezése olyan objektum, amelyet egyszer lehet létrehozni, és számos index használhatja. A szolgáltatási szint határozza meg, hogy hány szinonimatérképet hozhat létre, az ingyenes és az alapszintű szint három szinonimatérképétől kezdve a Standard szintekig 20-ig.
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. Bár a keresési szolgáltatásban több szinonimatérképet is létrehozhat, egy indexen belül egy meződefiníció csak egy szinonimatérkép-hozzárendeléssel rendelkezhet.
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.
POST /synonymmaps?api-version=2023-11-01
{
"name": "geo-synonyms",
"format": "solr",
"synonyms": "
USA, United States, United States of America\n
Washington, Wash., WA => WA\n"
}
Szinonimatérkép létrehozásához tegye ezt programozott módon (a portál nem támogatja a szinonimatérkép-definíciókat):
- Szinonimatérkép (REST API) létrehozása. Ez a hivatkozás a legleíróbb.
- Szinonimáktérkép osztály (.NET) és Szinonimák hozzáadása C használatával#
- Szinonimaosztály (Python)
- Szinonimatérkép felület (JavaScript)
- Szinonimakép osztály (Java)
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ó: SynonymFilter. 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 le vannak képezve egy explicit kifejezésre a lekérdezés előtt)
Minden szabályt az új sor karakterének (\n
) kell elválasztania. 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űssé alakítják a nagybetűs vagy vegyes kisbetűs kifejezéseket, de ha meg szeretné őrizni a sztring speciális karaktereit, például vesszőt vagy kötőjelet, 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 a lekérdezés USA
or USA
"United States"
"United States of America"
vagy . 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 egy lekérdezés dog
kibontja a lekérdezést, hogy belefoglalja és canine
befoglalja puppy
a lekérdezést.
{
"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.
Explicit esetben a lekérdezés a kifejezéshez Washington
tartozik, Wash.
vagy WA
újra van írva WA
, és a lekérdezési motor csak a kifejezés WA
egyezéseit keresi. Az explicit leképezés csak a megadott irányba vonatkozik, és ebben az esetben nem írja át újra a lekérdezést WA
Washington
.
{
"format": "solr",
"synonyms": "
Washington, Wash., WA => WA\n
California, Calif., CA => CA\n"
}
Speciális karakterek menekülése
A teljes szöveges keresés során a szinonimák ugyanúgy lesznek elemezve a lekérdezésfeldolgozás során, 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
+ - & | ! ( ) { } [ ] ^ " ~ * ? : \ /
Ne feledje, hogy ha meg kell őriznie azokat a karaktereket, amelyeket egyébként az alapértelmezett elemző elvet az indexelés során, cserélje le 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 attól. A fenti szinonimatérképhez a REST API-nak küldött JSON például így nézne ki:
{
"format":"solr",
"synonyms": "WA\\, USA, WA, Washington"
}
Szinonimatérképek feltöltése és kezelése
Ahogy korábban említettük, szinonimatérképeket hozhat létre vagy frissíthet anélkül, hogy megzavarná a lekérdezési és indexelési számítási feladatokat. A szinonimák leképezése önálló objektum (például indexek vagy adatforrások), és amíg egyetlen mező sem használja, a frissítések nem okozzák az indexelést vagy a lekérdezéseket. Ha azonban szinonimatérképet ad hozzá egy meződefinícióhoz, a szinonimák leképezésének törlésekor a szóban forgó mezőket tartalmazó lekérdezések 404-ben meghiúsulnak.
Szinonimák leképezésének létrehozása, frissítése és törlése mindig teljes dokumentumművelet, ami azt jelenti, hogy a szinonimák leképezésének 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
Szinonimák térképének feltöltése után engedélyezheti a szinonimákat a típus Edm.String
mezőiben, vagy Collection(Edm.String)
a meglévő "searchable":true
mezőkben. Mint említettük, a meződefiníciók csak egy szinonimatérképet használhatnak.
POST /indexes?api-version=2020-06-30
{
"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 hozzáadása nem ír elő új követelményeket a lekérdezések felépítéséhez. A kifejezés- és kifejezéskeresések ugyanúgy kiadhatók, mint a szinonimák hozzáadása előtt. Az egyetlen különbség az, hogy ha egy lekérdezési kifejezés szerepel a szinonimatérképen, a lekérdezési 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 szinonimát engedélyező mezőt, a szinonimák leképezéséből nem fog egyezéseket látni.
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 az OR operátor szinonimáival. 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.
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>*
.
Ha fejlesztési (nem éles) környezetben már rendelkezik 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.