Synonyme in Azure KI Search

Bei einem Suchdienst sind Synonymzuordnungen eine globale Ressource, die gleichwertige Ausdrücke zuordnen und den Bereich einer Abfrage erweitert, ohne dass der Benutzer den Begriff tatsächlich bereitstellen muss. Wenn zum Beispiel „Hund“, „Hundeartige“ und „Welpe“ zugeordnete Synonyme sind, werden bei Abfrage von „Hundeartige“ Dokumente gefunden, die „Hund“ enthalten.

Erstellen von Synonymen

Eine Synonymzuordnung ist ein Objekt, das einmalig erstellt und von vielen Indizes verwendet werden kann. Die Dienstebene bestimmt, wie viele Synonymzuordnungen Sie erstellen können, von drei Synonymzuordnungen für die Tarife „Free“ und „Basic“ bis zu 20 für die Standard-Tarife.

Sie können mehrere Synonymzuordnungen für verschiedene Sprachen erstellen, z. B. englische und französische Versionen oder Lexika, wenn Ihre Inhalte technischen Jargon, Slang oder verdeckte Terminologie enthalten. Sie können zwar mehrere Synonymzuordnungen in Ihrem Suchdienst erstellen, innerhalb eines Indexes kann einer Felddefinition aber immer nur eine Synonymzuordnung zugewiesen sein.

Eine Synonymzuordnung besteht aus Name, Format und Regeln, die als Synonymzuordnungseinträge fungieren. Das einzige unterstützte Format ist solr, und das solr-Format bestimmt die Regelkonstruktion.

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

Eine Synonymzuordnung muss programmgesteuert erstellt werden (das Portal unterstützt keine Synonymzuordnungsdefinitionen):

Definieren von Regeln

Zuordnungsregeln befolgen die Open Source-Synonymfilterspezifikation von Apache Solr, die im folgenden Dokument beschrieben ist: SynonymFilter. Das Format solr unterstützt zwei Arten von Regeln:

  • Äquivalenz (wobei Begriffe in der Abfrage gleichwertige Alternativen sind)

  • Explizite Zuordnungen (wobei Begriffe vor dem Ausführen der Abfrage einem expliziten Begriff zugeordnet werden)

Jede Regel muss durch das Zeilenumbruchzeichen (\n) von anderen Regeln getrennt werden. Sie können bis zu 5.000 Regeln pro Synonymzuordnung in einem kostenlosen Dienst und 20.000 Regeln pro Zuordnung in anderen Tarifen definieren. Jede Regel kann bis zu 20 Erweiterungen (oder Elemente in einer Regel) aufweisen. Weitere Informationen finden Sie unter Synonymeinschränkungen.

Abfrageparser fügen beim Erstellen der Synonymzuordnung die entsprechenden Escapezeichen hinzu, wenn Sie jedoch Sonderzeichen in der Zeichenfolge beibehalten möchten, z. B. ein Komma oder gedankenstrich, die entsprechenden Escapezeichen hinzufügen.

Äquivalenzregeln

Regeln für äquivalente Begriffe innerhalb derselben Regel werden durch Kommas getrennt. Im ersten Beispiel wird eine Abfrage zu USAUSA OR ODER "United States""United States of America"erweitert. Beachten Sie, dass, zum Abgleich mit einem Ausdruck, die Abfrage selbst eine Abfrage mit einem in Anführungszeichen eingeschlossene Ausdruck sein muss.

Im Äquivalenzfall erweitert eine Abfrage zur dog Erweiterung der Abfrage auch ein- puppy und canine.

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

Explizite Zuordnung

Regeln für eine explizite Zuordnung werden durch einen Pfeil => gekennzeichnet. Wenn angegeben, wird eine Ausdruckssequenz einer Suchabfrage, die der linken Seite => entspricht, zur Abfragezeit durch die Alternativen auf der rechten Seite ersetzt.

Im expliziten Fall sucht eine Abfrage für Washington, Wash. oder WA wird neu geschrieben als WA, und das Abfragemodul sucht nur nach Übereinstimmungen für den Ausdruck WA. Die explizite Zuordnung gilt nur für die angegebene Richtung und schreibt in diesem Fall die Abfrage WA nicht zu Washington um.

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

Verwenden von Escapezeichen für Sonderzeichen

Bei der Volltextsuche werden Synonyme während der Abfrageverarbeitung wie jeder andere Suchbegriff analysiert, was bedeutet, dass die Regeln für reservierte Zeichen und Sonderzeichen auch für die Begriffe in Ihrer Synonymzuordnung gelten. Die Liste der Zeichen, die die Verwendung von Escapezeichen erfordern, unterscheidet sich zwischen der einfachen Syntax und der vollständigen Syntax:

Denken Sie daran: Wenn Sie Zeichen beibehalten müssen, die andernfalls während der Indizierung vom Standardanalyseprogramm verworfen würden, müssen Sie ein Analyseprogramm einsetzen, das sie beibehält. Zu den Optionen gehören Microsoft Natural Language Analyzer (Analysetool für natürliche Sprache), bei dem Wörter mit Bindestrichen beibehalten werden, oder ein benutzerdefiniertes Analysetool für komplexere Muster. Weitere Informationen finden Sie unter Teilausdrücke, Muster und Sonderzeichen.

Nachfolgend sehen Sie ein Beispiel für das Versehen eines Zeichens mit einem Backslash als Escapezeichen.

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

Da der umgekehrte Schrägstrich selbst ein Sonderzeichen in anderen Sprachen wie JSON und C# ist, müssen Sie ihn wahrscheinlich mit einem doppelten Escapezeichen versehen. Beispielsweise würde der JSON-Code, der für die obige Synonymzuordnung an die REST-API gesendet wird, wie folgt aussehen:

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

Hochladen und Verwalten von Synonymzuordnungen

Wie bereits erwähnt, können Sie eine Synonymzuordnung erstellen oder aktualisieren, ohne die Abfrage- und Indizierungsworkloads zu unterbrechen. Eine Synonymzuordnung ist ein eigenständiges Objekt (wie Indizes oder Datenquellen), und solange sie von keinem Feld verwendet wird, führen Aktualisierungen nicht zu Fehlern bei Indizierungen oder Abfragen. Sobald Sie eine Synonymzuordnung jedoch zu einer Felddefinition hinzugefügt haben und sie dann löschen, schlägt jede Abfrage, die die betreffenden Felder enthält, mit einem 404-Fehler fehl.

Das Erstellen, Aktualisieren und Löschen einer Synonymzuordnung betrifft immer das ganze Dokument. Daher können Sie keine Teile der Synonymzuordnung inkrementell aktualisieren oder löschen. Selbst das Aktualisieren einer einzelnen Regel erfordert das erneute Laden.

Zuweisen von Synonymen zu Feldern

Nach dem Hochladen einer Synonymzuordnung können Sie die Synonyme für Felder des Typs Edm.String oder Collection(Edm.String) auf Felder mit "searchable":true aktivieren. Wie bereits erwähnt, kann eine Felddefinition nur eine Synonymzuordnung verwenden.

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

Abfrage nach äquivalenten oder zugeordneten Feldern

Das Hinzufügen von Synonymen stellt keine neuen Anforderungen an die Abfragekonstruktion. Sie können Begriffe und Ausdrücke genau so abfragen wie vor dem Hinzufügen der Synonyme. Der einzige Unterschied besteht darin, dass die Abfrage-Engine bei Vorhandensein eines Abfragebegriffs in der Synonymzuordnung den Begriff oder Ausdruck je nach Regel entweder erweitert oder umformuliert.

Verwendung von Synonymen bei der Abfrageausführung

Synonyme sind eine Abfrageerweiterungstechnik, die den Inhalt eines Indexes mit äquivalenten Begriffen ergänzt, aber nur für Felder, die über eine Synonymzuordnung verfügen. Wenn eine feldbezogene Abfrage ein für Synonyme aktiviertes Feld ausschließt, werden keine Übereinstimmungen aus der Synonymzuordnung angezeigt.

Für Felder, die für Synonyme aktiviert sind, unterliegen Synonyme derselben Textanalyse wie das zugehörige Feld. Wenn ein Feld z. B. mit dem standardmäßigen Lucene-Analysetool analysiert wird, unterliegen synonyme Begriffe zur Abfragezeit ebenfalls dem standardmäßigen Lucene-Analysetool. Wenn Sie Interpunktionszeichen wie Punkte oder Bindestriche im synonymen Begriff beibehalten möchten, wenden Sie ein Analysetool an, das den Inhalt beibehält.

Intern ändert das Synonymefeature die ursprüngliche Abfrage mithilfe von Synonymen mit dem OR-Operator. Aus diesem Grund werden der ursprüngliche Begriff und Synonyme von der Treffermarkierung und von Bewertungsprofilen als gleichwertig behandelt.

Synonyme gelten nur für Freitextabfragen und werden nicht für Filter, Facetten, AutoVervollständigen oder Vorschläge unterstützt. AutoVervollständigen und Vorschläge basieren nur auf dem ursprünglichen Begriff. Synonymübereinstimmungen werden in der Antwort nicht angezeigt.

Die Synonymerweiterungen gelten nicht für Platzhaltersuchbegriffe. Präfix-, Fuzzy- und Regex-Begriffe werden nicht erweitert.

Wenn Sie eine einzelne Abfrage, die eine Synonymerweiterung sowie Platzhalter-, Regex- und Fuzzysuche umfasst, durchführen möchten, können Sie die Abfragen mit der OR-Syntax kombinieren. Um beispielsweise Synonyme mit Platzhaltern für eine einfache Abfragesyntax zu kombinieren, lautet der Begriff <query> | <query>*.

Wenn Sie über einen vorhandenen Index in einer Entwicklungsumgebung (nicht Produktionsumgebung) verfügen, experimentieren Sie mit einem kleinen Wörterbuch, um zu prüfen, wie sich das Hinzufügen von Synonymen auf die Suche auswirkt, einschließlich der Auswirkungen auf Bewertungsprofile, Treffermarkierungen und Vorschläge.

Nächste Schritte