Synoniemen in Azure Cognitive Search

Binnen een zoekservice zijn synoniemkaarten een globale resource die gelijkwaardige termen koppelt, zodat het bereik van een query wordt uitgebreid zonder dat de gebruiker de term daadwerkelijk moet verstrekken. Als bijvoorbeeld 'hond', 'canine' en 'synonie' zijn toe te voegen aan synoniemen, komt een query op 'canine' overeen op een document met 'hond'.

Synoniemen maken

Een synoniemenkaart is een asset die één keer kan worden gemaakt en door veel indexen kan worden gebruikt. De servicelaag bepaalt hoeveel synoniemenkaarten u kunt maken, variërend van drie synoniemenkaarten voor de lagen Gratis en Basic tot 20 voor de Standard-lagen.

U kunt meerdere synoniemenkaarten maken voor verschillende talen, zoals Engels en Frans, of woordencons als uw inhoud technische of verborgen terminologie bevat. Hoewel u meerdere synoniemenkaarten in uw zoekservice kunt maken, kan een veld er slechts één gebruiken.

Een synoniemkaart bestaat uit naam, indeling en regels die als synoniemenkaartgegevens fungeren. De enige indeling die wordt ondersteund, is solr en de indeling bepaalt de constructie van solr regels.

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

Als u een synoniemenkaart wilt maken, doet u dit programmatisch (de portal biedt geen ondersteuning voor synoniemenkaartdefinities):

Regels definiëren

Toewijzingsregels voldoen aan de opensource-specificatie voor synoniemfilters van Apache Solr, zoals beschreven in dit document: SynonymFilter. De solr indeling ondersteunt twee soorten regels:

  • equivalentie (waarbij termen gelijk zijn aan vervangingen in de query)

  • expliciete toewijzingen (waarbij termen worden toegewezen aan één expliciete term vóór het uitvoeren van query's)

Elke regel moet worden begrensd door het nieuwe regelteken ( \n ). U kunt maximaal 5000 regels per synoniemkaart definiëren in een gratis service en 20.000 regels per kaart in andere lagen. Elke regel kan maximaal 20 uitbreidingen (of items in een regel) hebben. Zie Synoniemlimieten voor meer informatie.

Queryparsers maken gebruik van hoofdletters of hoofdletters in kleine letters, maar als u speciale tekens in de tekenreeks wilt behouden, zoals een komma of streepje, voegt u de juiste escapetekens toe bij het maken van de synoniemenkaart.

Equivalentieregels

Regels voor gelijkwaardige termen zijn door komma's scheidingstekens binnen dezelfde regel. In het eerste voorbeeld wordt een query op USA uitgebreid naar OR OF USA "United States" "United States of America" . Als u een match wilt maken voor een woordgroep, moet de query zelf een tussen aanhalingstekens ingesloten woordgroepenquery zijn.

In het geval van equivalentie breidt een query voor dog de query uit om ook en op te puppy canine nemen.

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

Expliciete toewijzing

Regels voor een expliciete toewijzing worden aangeduid met een pijl => . Wanneer deze optie is opgegeven, wordt een termreeks van een zoekquery die overeenkomt met de linkerkant van vervangen door de alternatieven aan de rechterkant tijdens het uitvoeren van => de query.

In het expliciete geval wordt een query voor of herschreven als , en zal de Washington Wash. WA WA query-engine alleen zoeken naar overeenkomsten op de term WA . Expliciete toewijzing is alleen van toepassing in de opgegeven richting en herschrijft de query WA Washington in dit geval niet.

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

Escape-tekens voor speciale tekens

Bij zoeken in volledige tekst worden synoniemen tijdens het verwerken van query's geanalyseerd, net als bij andere querytermen. Dit betekent dat regels voor gereserveerde en speciale tekens van toepassing zijn op de termen in uw synoniemenkaart. De lijst met tekens die escape-tekens vereist, varieert tussen de eenvoudige syntaxis en de volledige syntaxis:

Als u tekens wilt behouden die anders door de standaardanalyse zouden worden genegeerd tijdens het indexeren, moet u deze vervangen door een analyse die ze behoudt. Enkele opties zijn analyses van natuurlijke taalvan Microsoft, waarmee afbreekstreeepte woorden behouden blijven, of een aangepaste analyse voor complexere patronen. Zie Gedeeltelijke termen, patronen en speciale tekens voor meer informatie.

In het volgende voorbeeld ziet u een voorbeeld van het escapen van een teken met een backslash:

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

Omdat de backslash zelf een speciaal teken is in andere talen, zoals JSON en C#, moet u deze waarschijnlijk dubbel escapen. De JSON die wordt verzonden naar de REST API voor de bovenstaande synoniemkaart ziet er als volgende uit:

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

Upload synoniemenkaarten maken en beheren

Zoals eerder vermeld, kunt u een synoniemenkaart maken of bijwerken zonder query- en indexeringsworkloads te onderbreken. Een synoniemkaart is een zelfstandig object (zoals indexen of gegevensbronnen), en zolang er geen veld wordt gebruikt, zullen updates niet leiden tot het indexeren of query's mislukken. Als u echter een synoniemenkaart toevoegt aan een velddefinitie en u vervolgens een synoniemenkaart verwijdert, mislukt elke query die de velden in kwestie bevat met een 404-fout.

Het maken, bijwerken en verwijderen van een synoniemkaart is altijd een bewerking voor hele documenten, wat betekent dat u delen van de synoniemenkaart niet incrementeel kunt bijwerken of verwijderen. Voor het bijwerken van zelfs één regel is opnieuw laden vereist.

Synoniemen toewijzen aan velden

Nadat u een synoniemenkaart hebt geüpload, kunt u de synoniemen inschakelen voor velden van het type of , voor Edm.String Collection(Edm.String) velden met "searchable":true . Zoals vermeld, kan een velddefinitie slechts één synoniemkaart gebruiken.

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

Query's uitvoeren op gelijkwaardige of aan kaart toe te geven velden

Het toevoegen van synoniemen legt geen nieuwe vereisten op voor het bouwen van query's. U kunt term- en woordgroepenquery's uitvoeren net als vóór de toevoeging van synoniemen. Het enige verschil is dat als er een queryterm bestaat in de synoniemenkaart, de query-engine de term of woordgroep uitbreidt of herschrijft, afhankelijk van de regel.

Hoe synoniemen worden gebruikt tijdens het uitvoeren van query's

Synoniemen zijn een techniek voor query-uitbreiding die een aanvulling vormt op de inhoud van een index met gelijkwaardige termen, maar alleen voor velden met een synoniemtoewijzing. Als een veldquery een veld met synoniemenbereik uitsluit, ziet u geen overeenkomsten van de synoniemenkaart.

Voor synoniemenvelden zijn synoniemen onderworpen aan dezelfde tekstanalyse als het bijbehorende veld. Als een veld bijvoorbeeld wordt geanalyseerd met behulp van de lucene-standaardanalyse, zijn synoniemtermen tijdens het uitvoeren van query's ook onderhevig aan de standaard Lucene Analyzer. Als u interpunctie, zoals punten of streepjes, in de synoniemterm wilt behouden, moet u een analyse met inhoudsbehoud toepassen op het veld.

Intern herschrijft de synoniemenfunctie de oorspronkelijke query met synoniemen met de operator OR. Daarom behandelen markerings- en scoreprofielen voor treffers de oorspronkelijke term en synoniemen als gelijkwaardig.

Synoniemen zijn alleen van toepassing op tekstquery's in vrije vorm en worden niet ondersteund voor filters, facetten, automatisch aanvullen of suggesties. Automatisch aanvullen en suggesties zijn alleen gebaseerd op de oorspronkelijke term; overeenkomsten met synoniemen worden niet weergegeven in het antwoord.

Synoniemuitbreidingen zijn niet van toepassing op zoektermen met jokertekens; termen voor voorvoegsel, fuzzy en regex worden niet uitgebreid.

Als u één query moet uitvoeren die uitbreiding van synoniemen en zoekopdrachten met jokertekens, regex of fuzzy zoekopdrachten uitvoert, kunt u de query's combineren met behulp van de OR-syntaxis. Als u bijvoorbeeld synoniemen wilt combineren met jokertekens voor eenvoudige querysyntaxis, is de term <query> | <query>* .

Als u een bestaande index in een ontwikkelingsomgeving (niet-productie) hebt, experimenteert u met een kleine woordenlijst om te zien hoe het optellingen van synoniemen de zoekervaring wijzigt, met inbegrip van impact op scoreprofielen, markeren van treffers en suggesties.

Volgende stappen