Zdefiniuj synonimy

Organizacje często mają unikalną terminologię lub wiele sposobów odwoływania się do tego samego pojęcia. Określenie synonimów ustala równoważność terminów, co pomaga użytkownikom znajdować produkty podczas wyszukiwania.

Zdefiniuj synonimy, indeksując elementy za pomocą dobrze znanego schematu _dictionaryEntry.

Elementy typu _dictionaryEntry mogą mieć te właściwości:

Właściwość Typ Opis Wymagany?
_term string Termin do zdefiniowania. Zalecane wartości to słowa lub wyrażenia bez łącznika i znaków interpunkcyjnych. Wymagane
_synonym string (repeated) Alternatywne słowa, które mają być uwzględniane w zapytaniach pasujących do ciągu znaków zdefiniowanego w _term. Wymagane
_onlyApplicableForAttachedSearchApplications boolean Umożliwia grupowanie synonimów według źródła danych i wyszukiwarki. Więcej informacji znajdziesz w artykule Definiowanie synonimów specyficznych dla źródła danych. Opcjonalny

Gdy użytkownik uwzględni w zapytaniu wartość _term, efektywne zapytanie będzie miało postać „termin LUB synonimy”. Jeśli na przykład zdefiniujesz "scifi" z synonimem "science fiction", zapytanie o "scifi" będzie pasować do produktów zawierających dowolny z tych terminów.

Synonimy nie są domyślnie dwukierunkowe. Zapytanie "science fiction" pasuje tylko do tego dokładnego wyrażenia, chyba że zdefiniujesz je również jako termin z "scifi" jako synonimem. Aby terminy były wymienne, zdefiniuj każdy z nich osobno:

Hasło Synonimy
scifi science fiction
science fiction scifi

Podczas przetwarzania zapytania usuwane są łączniki i znaki interpunkcyjne przed zastosowaniem synonimów. Zapytanie "sci-fi" pasuje do hasła "sci fi". Aby obsługiwać terminy z łącznikiem, znormalizuj _term, aby zamiast łączników używać spacji.

Przykłady zamiennych:

Hasło Synonimy
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

Domyślnie synonimy są stosowane w całej domenie i we wszystkich aplikacjach do wyszukiwania. Aby je ograniczyć, zapoznaj się z artykułem Definiowanie synonimów specyficznych dla źródła danych.

Definiowanie globalnych synonimów za pomocą pakietu SDK

Użyj pakietu Content Connector SDK, aby zdefiniować terminy i synonimy. Więcej informacji znajdziesz w artykule Tworzenie łącznika treści.

Ten fragment kodu tworzy RepositoryDoc na podstawie rekordu CSV:

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();
}

Ważne informacje:

  • Synonimy muszą być publiczne w domenie. Możesz na przykład ustawić listę ACL na DOMAIN_PUBLIC_ACL.
  • Unikaj ustawień w pliku konfiguracji, które zastępują to ustawienie, np. defaultAcl.mode=FALLBACK lub defaultAcl.public=true.

Określanie synonimów w wyszukiwarce

Aby podać synonimy specyficzne dla zespołu (np. dla działu inżynieryjnego i działu sprzedaży), zindeksuj każdy synonim za pomocą znaku _onlyApplicableForAttachedSearchApplications=true. Ogranicza to synonimy do aplikacji do wyszukiwania, które zawierają określone źródło danych.

Przykład:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);