Definisci i sinonimi

Le organizzazioni spesso hanno una terminologia univoca o più modi per fare riferimento allo stesso concetto. La definizione dei sinonimi stabilisce l'equivalenza dei termini, aiutando gli utenti a trovare gli elementi durante le ricerche.

Definisci i sinonimi indicizzando gli elementi con lo schema noto _dictionaryEntry.

Gli elementi di tipo _dictionaryEntry possono avere le seguenti proprietà:

Proprietà Tipo Descrizione Obbligatorio?
_term string Il termine da definire. I valori consigliati sono parole o frasi senza trattini e senza punteggiatura. Obbligatorio
_synonym string (repeated) Termini alternativi da includere nelle query che corrispondono alla stringa definita in _term. Obbligatorio
_onlyApplicableForAttachedSearchApplications boolean Consente di raggruppare i sinonimi per origine dati e applicazione di ricerca. Per ulteriori informazioni, vedi Definire sinonimi specifici per l'origine dati. Facoltativo

Quando un utente include un valore _term in una query, la query effettiva diventa "term OR synonyms". Ad esempio, se definisci "scifi" con il sinonimo "science fiction", una query per "scifi" corrisponde agli elementi che contengono uno dei due termini.

Per impostazione predefinita, i sinonimi non sono bidirezionali. Una query per "science fiction" corrisponde solo a questa frase esatta, a meno che tu non la definisca anche come termine con "scifi" come sinonimo. Per rendere i termini intercambiabili, definiscili separatamente:

Termine Sinonimi
scifi science fiction
science fiction scifi

L'elaborazione delle query rimuove i trattini e la punteggiatura prima di applicare i sinonimi. Una query per "sci-fi" corrisponde al termine "sci fi". Per supportare i termini con trattino, normalizza _term in modo da utilizzare gli spazi anziché i trattini.

Esempi intercambiabili:

Termine Sinonimi
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

Per impostazione predefinita, i sinonimi vengono applicati all'intero dominio e a tutte le applicazioni di ricerca. Per limitarli, vedi Definire sinonimi specifici per l'origine dati.

Definire sinonimi globali utilizzando l'SDK

Utilizza Content Connector SDK per definire termini e sinonimi. Per maggiori dettagli, vedi Creare un connettore di contenuti.

Questo snippet crea un RepositoryDoc da un record 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();
}

Considerazioni importanti:

  • Le voci dei sinonimi devono essere pubbliche per il dominio. Ad esempio, puoi impostare l'elenco di controllo dell'accesso su DOMAIN_PUBLIC_ACL.
  • Evita le impostazioni nel file di configurazione che sostituiscono questa impostazione, ad esempio defaultAcl.mode=FALLBACK o defaultAcl.public=true.

Definire sinonimi specifici per l'applicazione di ricerca

Per fornire sinonimi specifici per il team (ad es. per l'ingegneria rispetto alle vendite), indicizza ogni sinonimo con _onlyApplicableForAttachedSearchApplications=true. In questo modo, i sinonimi vengono limitati alle applicazioni di ricerca che includono l'origine dati specifica.

Esempio:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);