Lägga till synonymer i Azure AI Search

I en söktjänst associerar en synonymkarta motsvarande termer och utökar omfånget för en fråga utan att användaren behöver ange termen. Anta till exempel att hund, hund och valp är mappade synonymer, en fråga om hundmatchningar på ett dokument som innehåller hund. 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.

Några viktiga punkter om synonymkartor:

  • En synonymkarta är en resurs på den översta nivån som kan skapas en gång och användas av många index.
  • En synonymkarta gäller för strängfält.
  • Du kan skapa och tilldela en synonymkarta när som helst utan avbrott i indexering eller frågor.
  • Tjänstnivån anger gränserna för hur många synonymkartor du kan skapa.
  • Söktjänsten kan ha flera synonymkartor, men inom ett index kan en fältdefinition bara ha en synonymkartatilldelning.

Skapa en synonymkarta

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.

Om du vill skapa en synonymkarta gör du det programmatiskt. Portalen stöder inte synonymkartdefinitioner.

Använd REST API (Create Synonym Map) för att skapa en synonymkarta.

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

Definiera regler

Mappningsregler följer specifikationen för synonymfilter med öppen källkod för Apache Solr, som beskrivs i det här dokumentet: SynonymGraphFilter. 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)

Varje regel avgränsas av 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ågeparsers sänker automatiskt eventuella versaler eller blandade skiftlägestermer. 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 i USA till USA ELLER "USA" ELLER "USA 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 hund frågan till att även innehålla valp och hund.

{
"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 Washington, Wash eller WA om som WA, och frågemotorn söker bara efter matchningar på termen WA. 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

Synonymer analyseras under frågebearbetning precis som andra frågetermer, vilket innebär att regler för 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:

Om du vill bevara tecken som standardanalysatorn tar bort ersätter du 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. Här är ett exempel i JSON:

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

Hantera synonymkartor

Du kan uppdatera en synonymkarta utan att störa arbetsbelastningar för frågor och indexering. Men när du lägger till en synonymkarta i ett fält, om du sedan tar bort en synonymkarta, misslyckas alla frågor som innehåller fälten i fråga med ett 404-fel.

Att skapa, uppdatera och ta bort en synonymkarta är alltid en heldokumentåtgärd. Du kan inte 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 skapat synonymkartan tilldelar du den till ett fält i indexet. Om du vill tilldela synonymkartor gör du det programmatiskt. Portalen stöder inte synonymmappningsfältassociationer.

  • Ett fält måste vara av typen Edm.String eller Collection(Edm.String)
  • Ett fält måste ha "searchable":true
  • Ett fält kan bara ha en synonymkarta

Om synonymkartan finns i söktjänsten används den i nästa fråga, utan att någon omindexering eller återskapande krävs.

Använd REST API (Create or Update Index) för att ändra en fältdefinition.

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

Fråga om motsvarande eller mappade fält

En synonymfälttilldelning ändrar inte hur du skriver frågor. Efter tilldelningen av synonymkartan är den enda skillnaden att om det finns en frågeterm i synonymkartan expanderar eller skriver sökmotorn 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 ser du 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 omfattas synonymtermerna också av Lucene-standardanalysatorn 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 hjälp av 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.

Om du har ett befintligt index i en utvecklingsmiljö (icke-produktion) 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.

Jokerteckensökningar

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 .

Gå vidare