Synonyme definieren

Es ist üblich, dass ein Unternehmen über eine eindeutige Terminologie oder mehrere Methoden verfügt, um sich auf ein Konzept oder einen Gegenstand zu beziehen. Sie sollten Synonyme definieren, Äquivalenz von Begriffen, damit Nutzer Elemente bei der Suche leichter finden können.

Wenn Sie Synonyme definieren möchten, werden Elemente mit dem bekannten _dictionaryEntry indexiert. Schema.

Elemente des Typs _dictionaryEntry können die folgenden Eigenschaften haben:

Attribut Typ Beschreibung Erforderlich?
_term string Der zu definierende Begriff. Empfohlene Werte sind Wörter ohne Bindestrich oder Wortgruppen ohne Satzzeichen. Erforderlich
_synonym string (repeated) Alternative Begriffe, die in Abfragen eingeschlossen werden sollen, die dem in _term definierten String entsprechen. Erforderlich
_onlyApplicableForAttachedSearchApplications boolean Damit können Sie Synonyme nach Datenquelle und Suchanwendung gruppieren. Weitere Informationen finden Sie unter Synonyme für bestimmte Datenquellen definieren. Optional

Wenn ein Nutzer den Wert des Attributs _term in eine Abfrage einbindet, Die effektive Abfrage wird zu term OR synonyms. Wenn zum Beispiel der Parameter Begriff "scifi" wird durch das Synonym definiert "science fiction", dann eine Abfrage , die das Wort "scifi" enthalten, stimmt mit Elementen überein, die entweder "scifi" oder "science fiction."

Synonyme werden nicht bidirektional angewendet. Wenn die Abfrage stattdessen Cloud Search "science fiction," wendet keine Synonyme auf die Abfrage an. Die Abfrage stimmt nur mit Elementen überein, die "science fiction." Elemente mit "scifi" werden weggelassen.

Damit alle beiden Begriffe austauschbar sind, definieren Sie die einzelnen Begriffe separat:

Laufzeit Synonyme
scifi science fiction
science fiction scifi

Bei der Verarbeitung der Suchanfrage werden Bindestriche und andere Satzzeichen entfernt der Anwendung von Synonymen. Die Nutzeranfrage "sci-fi" entspricht _term "sci fi." Um Synonyme für Begriffe zu erstellen, die von Nutzern mit Bindestrich geschrieben werden können, normalisieren Sie zunächst im _term so, dass Leerzeichen anstelle von Bindestrichen verwendet werden.

Ausgehend vom Beispiel stimmen die folgenden Definitionen "sci-fi," "sci fi," "scifi," und "science fiction" als austauschbar:

Laufzeit Synonyme
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

Standardmäßig gelten Synonyme in jeder Datenquelle für die gesamte Domain. Insbesondere werden Synonyme für alle Suchanfragen auf alle Suchanwendungen angewendet. unabhängig von der Datenquelle. Wenn Sie datenquellenspezifische Synonyme verwenden möchten, verweisen Sie auf auf Datenquellenspezifische Synonyme definieren.

Globale Synonyme mit dem Cloud Search SDK definieren

Mit dem Content Connector SDK können Sie Begriffe und ihre Synonyme definieren. Weitere Informationen finden Sie unter Erstellen Sie einen Inhaltsconnector für Anleitung zum Erstellen eines Connectors.

Das folgende Snippet veranschaulicht, RepositoryDoc , die den Begriff und das Synonym basierend auf einem Datensatz in einer CSV-Datei darstellen:

DictionaryConnector.java
/**
 * Creates a document for indexing.
 *
 * For this connector sample, the created document is domain public
 *  searchable. The content is a simple text string.
 *
 * @param record The current CSV record to convert
 * @return the fully formed document ready for indexing
 */
private ApiOperation buildDocument(CSVRecord record) {
  // Extract term and synonyms from record
  String term = record.get(0);
  List<String> synonyms = StreamSupport.stream(record.spliterator(), false)
      .skip(1) // Skip term
      .collect(Collectors.toList());

  Multimap<String, Object> structuredData = ArrayListMultimap.create();
  structuredData.put("_term", term);
  structuredData.putAll("_synonym", synonyms);

  if (Configuration.getBoolean("dictionary.attachedToSearchApp", false).get()) {
    structuredData.put("_onlyApplicableForAttachedSearchApplications", true);
  }

  String itemName = String.format("dictionary/%s", term);

  // Using the SDK item builder class to create the item
  Item item =
      IndexingItemBuilder.fromConfiguration(itemName)
          .setItemType(IndexingItemBuilder.ItemType.CONTENT_ITEM)
          .setObjectType("_dictionaryEntry")
          .setValues(structuredData)
          .setAcl(DOMAIN_PUBLIC_ACL)
          .build();

  // Create the fully formed document
  return new RepositoryDoc.Builder()
      .setItem(item)
      .build();
}

Beachten Sie beim Definieren von Synonymen Folgendes:

  • Synonymeinträge müssen „domain public“ sein. Im vorherigen Beispiel Setzen Sie die ACL dazu auf DOMAIN_PUBLIC_ACL.
  • Die folgenden Attribute sollten für Ihre Konfigurationsdatei nicht definiert werden da sie die Domain-Public-Einstellung in Ihrem Code überschreiben: <ph type="x-smartling-placeholder">
      </ph>
    • defaultAcl.mode=FALLBACK
    • defaultAcl.public=true

Anwendungsspezifische Synonyme für die Suche definieren

Standardmäßig werden Synonyme auf alle Datenquellen in allen Suchanfragen angewendet Anwendungen.

Angenommen, Ihr Unternehmen verfügt über separate Engineering- und Vertriebsteams und möchten Sie jedem Team ein anderes Sucherlebnis bieten, einschließlich rollenspezifische Synonyme verwenden. In diesem Fall können Sie mit einer entwicklungsspezifischen Datenquelle, Synonymen und einer anderen Suchanwendung mit einer vertriebsspezifischen Datenquelle und Synonymen. Um das jedes Synonym in einer bestimmten Datenquelle indexieren, mit _onlyApplicableForAttachedSearchApplications=true. Dieses werden die Synonyme so eingeschränkt, dass sie nur auf die Suche angewendet werden. die eine bestimmte Datenquelle enthalten.

Fügen Sie beispielsweise den Parameter der Codezeile zum vorherigen Codebeispiel wird sichergestellt, dass die indexierten Synonyme sind datenquellenspezifisch:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);