Zdefiniuj synonimy

Organizacje często używają unikalnej terminologii lub mają kilka sposobów odwoływania się do tej samej koncepcji. Zdefiniowanie synonimów ustala równoważność haseł, co pomaga użytkownikom znajdować elementy podczas wyszukiwania.

Synonimy zdefiniuj, 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 Hasło do zdefiniowania. Zalecane wartości to słowa lub frazy bez łączników i znaków interpunkcyjnych. Wymagane
_synonym string (repeated) Alternatywne hasła, które mają być uwzględniane w zapytaniach pasujących do ciągu zdefiniowanego w _term. Wymagane
_onlyApplicableForAttachedSearchApplications boolean Umożliwia grupowanie synonimów według źródła danych i aplikacji do wyszukiwania. 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ć „term OR synonyms”. Jeśli na przykład zdefiniujesz "scifi" jako synonim "science fiction", zapytanie "scifi" będzie pasować do elementów zawierających dowolne z tych haseł.

Synonimy nie są domyślnie dwukierunkowe. Zapytanie "science fiction" będzie pasować tylko do tej dokładnej frazy, chyba że zdefiniujesz ją też jako hasło z "scifi" jako synonimem. Aby hasła były wymienne, zdefiniuj każde z nich osobno:

Hasło Synonimy
scifi science fiction
science fiction scifi

Przed zastosowaniem synonimów przetwarzanie zapytań usuwa łączniki i znaki interpunkcyjne. Zapytanie „"sci-fi"” pasuje do hasła „"sci fi"”. Aby obsługiwać hasła z łącznikami, znormalizuj _term, aby zamiast łączników używać spacji.

Przykłady zamiennych haseł:

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

Synonimy są domyślnie stosowane w całej domenie i we wszystkich aplikacjach do wyszukiwania. Aby je ograniczyć, przeczytaj artykuł Definiowanie synonimów specyficznych dla źródła danych.

Definiowanie synonimów globalnych za pomocą pakietu SDK

Aby zdefiniować hasła i synonimy, użyj pakietu Content Connector SDK. 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:

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

Definiowanie synonimów specyficznych dla aplikacji do wyszukiwania

Aby udostępnić synonimy specyficzne dla zespołu (np. dla inżynierów i sprzedawców), zindeksuj każdy synonim za pomocą _onlyApplicableForAttachedSearchApplications=true. Ogranicza to synonimy do aplikacji do wyszukiwania, które zawierają określone źródło danych.

Przykład:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);