Synonymer i Azure Cognitive Search

I en söktjänst är synonymkartor en global resurs som associerar motsvarande termer, vilket 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 kostnadsfria och grundläggande nivåer, 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 ditt innehåll innehåller teknisk eller dunkel terminologi. Du kan skapa flera synonymkartor i söktjänsten, men i ett index kan en fältdefinition bara ha en synonymmappningstilldelning.

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=2020-06-30
{
    "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 med 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 kommer att ge gemener eller blandade skiftlägestermer, men om du vill bevara specialtecken i strängen, till exempel ett 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 termer är kommaavgränsade inom samma regel. I det första exemplet expanderas en fråga på USA till USA OR ELLER "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 betecknas 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 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"
}

Undantag från 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 ignoreras av standardanalysatorn under indexeringen bör du ersätta en analysator som bevarar dem. Vissa alternativ är Microsoft analysverktyg för naturligt språk, som bevarar bindestreckade ord eller en anpassad analysverktyg 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#, behöver du förmodligen dubbelflykta det. 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 som har "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 expanderar eller skriver frågemotorn 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-standardanalysen kommer synonymtermerna också att omfattas av Lucene-standardanalysen vid frågetillfället. Om du vill bevara skiljetecken, till exempel punkter eller bindestreck, i synonymtermen, använder du ett innehållsbevarande analysverktyg på fältet.

Internt skriver synonymfunktionen om den ursprungliga frågan med synonymer med OPERATORN OR. 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, fasletter, komplettera automatiskt eller förslag. Komplettera automatiskt 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ägget av synonymer ändrar sökupplevelsen, inklusive påverkan på bedömningsprofiler, träffmarkering och förslag.

Nästa steg