Zdefiniuj synonimy

Często zdarza się, że organizacje używają unikalnej terminologii lub wielu sposobów odnosi się do koncepcji lub rzeczy. Należy zdefiniować synonimy, aby ustalić odpowiednik haseł, aby ułatwić użytkownikom znalezienie produktów podczas wyszukiwania.

Synonimy są definiowane przez indeksowanie elementów ze znanym parametrem _dictionaryEntry schemat.

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

Właściwość Typ Opis Wymagana?
_term string Termin do zdefiniowania. Zalecane wartości to słowa lub wyrażenia bez łączników bez znaków interpunkcyjnych. Wymagane
_synonym string (repeated) Hasła alternatywne, które mają być uwzględnione w zapytaniach pasujących do ciągu zdefiniowanego w polu _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 dla źródła danych. Opcjonalnie

Gdy użytkownik uwzględni w zapytaniu wartość właściwości _term, zapytanie skuteczne zmieni się w „hasło OR synonimy”. Na przykład, jeśli plik termin "scifi" jest zdefiniowany jako synonim "science fiction", następnie zapytanie zawierające słowo "scifi" odpowiada elementom zawierającym albo "scifi" lub "science fiction."

Synonimy nie są stosowane dwukierunkowo. Jeśli zamiast tego zapytanie to "science fiction," – Cloud Search nie spowoduje zastosowania żadnych synonimów do zapytania. Zapytanie pasuje tylko do elementów zawierających "science fiction." elementów zawierających "scifi" zostały pominięte.

Aby wszystkie oba terminy były wymienne, zdefiniuj je oddzielnie:

Termin Synonimy
scifi science fiction
science fiction scifi

Podczas przetwarzania zapytania łącznik i inne znaki interpunkcyjne są usuwane przed zastosowanie synonimów. Zapytanie użytkownika: "sci-fi" pasuje do _term "sci fi." Aby utworzyć synonimy haseł, które użytkownicy mogą łączyć za pomocą łączników, najpierw znormalizuj _term, aby zamiast łączników używać spacji.

Kontynuując nasz przykład, następujące definicje pasują do zapytań użytkowników "sci-fi," "sci fi," "scifi," i "science fiction" jako wymienne:

Termin Synonimy
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

Domyślnie synonimy w dowolnym źródle danych mają zastosowanie w całej domenie. Synonimy są stosowane w wyszukiwarkach dla wszystkich wyszukiwań niezależnie od źródła danych. Jeśli potrzebujesz synonimów związanych ze źródłem danych, zapoznaj się z artykułem aby Definiowanie synonimów dla źródła danych.

Definiowanie globalnych synonimów za pomocą pakietu SDK Cloud Search

Za pomocą pakietu Content Connector SDK możesz zdefiniować hasła i ich synonimy. Zobacz Utwórz oprogramowanie sprzęgające treści dla: za instrukcje tworzenia oprogramowania sprzęgającego.

Poniższy fragment kodu pokazuje tworzenie RepositoryDoc reprezentujące hasło i jego synonim na podstawie rekordu pliku 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();
}

Definiując synonimy, pamiętaj o tych kwestiach:

  • Wpisy synonimów muszą być publiczne w domenie. W poprzednim przykładzie w tym celu należy ustawić listę ACL na DOMAIN_PUBLIC_ACL.
  • W pliku konfiguracji nie należy określać tych właściwości ponieważ zastępują one w kodzie ustawienie publiczne domeny:
    • defaultAcl.mode=FALLBACK
    • defaultAcl.public=true

Zdefiniuj synonimy specyficzne dla wyszukiwarki

Domyślnie synonimy są stosowane do wszystkich źródeł danych we wszystkich wynikach wyszukiwania aplikacji.

Załóżmy jednak, że Twoja organizacja ma oddzielne zespoły inżynierów i zespołów sprzedaży, chcesz zapewnić każdemu zespołowi różne możliwości wyszukiwania. Mogą to być na przykład: synonimy związane z daną rolą. W takim przypadku możesz utworzyć jedno wyszukiwanie, ze źródłem danych specyficznych dla inżynierii i synonimami ze źródłem danych specyficznych dla sprzedaży i synonimami. Do osiągnięcia tego celu, zindeksowanie każdego synonimu w określonym źródle danych za pomocą funkcji _onlyApplicableForAttachedSearchApplications=true. Ten ogranicza synonimy, tak aby były stosowane tylko do wyszukiwania które korzystają z określonego źródła danych.

Na przykład dodanie parametru następujący wiersz kodu do poprzedniego przykładowego kodu zapewnia, że zindeksowane synonimy są dostosowane do źródła danych:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);