Synonymer i Azure AI Search

I en söktjänst är synonymkartor en global resurs som associerar motsvarande termer och utökar omfånget för en fråga utan att användaren behöver ange termen. Om du till exempel antar att "hund", "hund" och "valp" är mappade synonymer matchar en fråga på "hund" ett dokument som innehåller "hund".

Skapa synonymer

En synonymkarta är en tillgång som kan skapas en gång och användas av många index. Tjänstnivån avgör hur många synonymkartor du kan skapa, allt från tre synonymkartor för nivåerna Kostnadsfri och Basic, upp till 20 för standardnivåerna.

Du kan skapa flera synonymkartor för olika språk, till exempel engelska och franska versioner, eller lexikon om innehållet innehåller teknisk jargong, slang eller obskyr terminologi. Även om du kan skapa flera synonymkartor i söktjänsten kan en fältdefinition i ett index bara ha en synonymöversiktstilldelning.

En synonymkarta består av namn, format och regler som fungerar som synonymmappningsposter. Det enda format som stöds är solr, och solr formatet avgör regelkonstruktionen.

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"
}

Om du vill skapa en synonymkarta gör du det programmatiskt (portalen stöder inte synonymkartdefinitioner):

Definiera regler

Mappningsregler följer specifikationen för synonymfilter med öppen källkod för Apache Solr, som beskrivs i det här dokumentet: SynonymFilter. Formatet solr stöder två typer av regler:

  • likvärdighet (där termer är lika substitut i frågan)

  • explicita mappningar (där termer mappas till en explicit term före frågor)

Varje regel måste avgränsas med det nya radtecknet (\n). Du kan definiera upp till 5 000 regler per synonymkarta i en kostnadsfri tjänst och 20 000 regler per karta på andra nivåer. Varje regel kan ha upp till 20 expansioner (eller objekt i en regel). Mer information finns i Synonymgränser.

Frågeparsrar ger automatiskt gemener eller versaler, men om du vill bevara specialtecken i strängen, till exempel kommatecken eller bindestreck, lägger du till lämpliga escape-tecken när du skapar synonymkartan.

Regler för likvärdighet

Regler för motsvarande villkor avgränsas med kommatecken inom samma regel. I det första exemplet expanderar en fråga på USA till USA OR OR "United States""United States of America". Observera att om du vill matcha en fras måste själva frågan vara en citattät frasfråga.

I ekvivalensfallet expanderar en fråga för dog frågan till att även inkludera puppy och canine.

{
"format": "solr",
"synonyms": "
    USA, United States, United States of America\n
    dog, puppy, canine\n
    coffee, latte, cup of joe, java\n"
}

Explicit mappning

Regler för en explicit mappning anges med en pil =>. När det anges ersätts en termsekvens av en sökfråga som matchar vänster sida av => med alternativen till höger vid frågetillfället.

I det explicita fallet skrivs en fråga för , eller skrivs om som WA, och frågemotorn söker bara efter matchningar på termen WA.WAWash.Washington Explicit mappning gäller endast i den angivna riktningen och skriver inte om frågan WA till Washington i det här fallet.

{
"format": "solr",
"synonyms": "
    Washington, Wash., WA => WA\n
    California, Calif., CA => CA\n"
}

Undfly specialtecken

I fulltextsökning analyseras synonymer under frågebearbetning precis som andra frågetermer, vilket innebär att regler kring reserverade och specialtecken gäller för termerna i synonymkartan. Listan över tecken som kräver undantag varierar mellan den enkla syntaxen och den fullständiga syntaxen:

Kom ihåg att om du behöver bevara tecken som annars skulle tas bort av standardanalysatorn under indexeringen bör du ersätta en analysator som bevarar dem. Vissa alternativ inkluderar Microsofts analysverktyg för naturligt språk, som bevarar bindestreckade ord, eller en anpassad analysator för mer komplexa mönster. Mer information finns i Partiella termer, mönster och specialtecken.

I följande exempel visas ett exempel på hur du undflyr ett tecken med ett omvänt snedstreck:

{
    "format": "solr",
    "synonyms": "WA\, USA, WA, Washington\n"
}

Eftersom omvänt snedstreck i sig är ett specialtecken på andra språk som JSON och C#, måste du förmodligen undvika det. Den JSON som skickas till REST-API:et för synonymkartan ovan skulle till exempel se ut så här:

{
    "format":"solr",
    "synonyms": "WA\\, USA, WA, Washington"
}

Ladda upp och hantera synonymkartor

Som tidigare nämnts kan du skapa eller uppdatera en synonymkarta utan att störa arbetsbelastningar för frågor och indexering. En synonymkarta är ett fristående objekt (t.ex. index eller datakällor), och så länge inget fält använder det leder uppdateringar inte till att indexering eller frågor misslyckas. När du lägger till en synonymkarta i en fältdefinition misslyckas dock alla frågor som innehåller fälten i fråga med ett 404-fel om du sedan tar bort en synonymkarta.

Att skapa, uppdatera och ta bort en synonymkarta är alltid en heldokumentåtgärd, vilket innebär att du inte kan uppdatera eller ta bort delar av synonymkartan stegvis. Att uppdatera även en enskild regel kräver en ny inläsning.

Tilldela synonymer till fält

När du har laddat upp en synonymkarta kan du aktivera synonymerna för fält av typen Edm.String eller Collection(Edm.String), på fält med "searchable":true. Som nämnts kan en fältdefinition endast använda en synonymkarta.

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"
            ]
        }
    ]
}

Fråga om motsvarande eller mappade fält

Att lägga till synonymer medför inte nya krav för frågekonstruktion. Du kan utfärda term- och frasfrågor precis som du gjorde innan du lade till synonymer. Den enda skillnaden är att om det finns en frågeterm i synonymkartan kommer frågemotorn antingen att expandera eller skriva om termen eller frasen, beroende på regeln.

Hur synonymer används vid frågekörning

Synonymer är en frågeexpansionsteknik som kompletterar innehållet i ett index med motsvarande termer, men bara för fält som har en synonymtilldelning. Om en fältomfattande fråga exkluderar ett synonymaktiverat fält visas inte matchningar från synonymkartan.

För synonymaktiverade fält omfattas synonymer av samma textanalys som det associerade fältet. Om ett fält till exempel analyseras med lucene-standardanalyseraren kommer synonymtermerna också att omfattas av lucene-standardanalyseraren vid frågetillfället. Om du vill bevara skiljetecken, till exempel punkter eller bindestreck i synonymtermen, använder du en innehållsbevarande analysator på fältet.

Internt skriver synonymfunktionen om den ursprungliga frågan med synonymer med OR-operatorn. Därför behandlar träffmarkerings- och bedömningsprofiler den ursprungliga termen och synonymerna som likvärdiga.

Synonymer gäller endast för textfrågor i fritt format och stöds inte för filter, fasetter, automatisk komplettering eller förslag. Automatisk komplettering och förslag baseras endast på den ursprungliga termen. synonymmatchningar visas inte i svaret.

Synonymexpansioner gäller inte för sökord med jokertecken. prefix-, fuzzy- och regex-termer expanderas inte.

Om du behöver göra en enda fråga som tillämpar synonymexpansion och jokertecken, regex- eller fuzzy-sökningar kan du kombinera frågorna med hjälp av OR-syntaxen. Om du till exempel vill kombinera synonymer med jokertecken för enkel frågesyntax är <query> | <query>*termen .

Om du har ett befintligt index i en utvecklingsmiljö (icke-produktionsmiljö) experimenterar du med en liten ordlista för att se hur tillägg av synonymer ändrar sökupplevelsen, inklusive påverkan på bedömningsprofiler, träffmarkeringar och förslag.

Nästa steg