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):

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 caninebefoglalja 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 Washingtontartozik, Wash. vagy WA újra van írva WA, és a lekérdezési motor csak a kifejezés WAegyezé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 WAWashington .

{
"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:

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":truemező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.

További lépések