Definisci i sinonimi

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

Definisci i sinonimi indicizzando gli elementi con lo schema ben 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 trattino e 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 "termine OR sinonimi". Ad esempio, se definisci "scifi" con il sinonimo "science fiction", una query per "scifi" trova elementi contenenti uno dei due termini.

Per impostazione predefinita, i sinonimi non sono bidirezionali. Una query per "science fiction" corrisponde solo a quella frase esatta, a meno che non la definisci 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 la sillabazione 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 che utilizzi gli spazi bianchi 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, consulta Definire sinonimi specifici per l'origine dati.

Definisci sinonimi globali utilizzando l'SDK

Utilizza l'SDK Content Connector per definire termini e sinonimi. Per maggiori dettagli, consulta 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. Ad esempio, puoi impostare la lista di controllo degli accessi su DOMAIN_PUBLIC_ACL.
  • Evita impostazioni nel file di configurazione che lo sostituiscono, ad esempio defaultAcl.mode=FALLBACK o defaultAcl.public=true.

Definisci sinonimi specifici per l'applicazione di ricerca

Per fornire sinonimi specifici per il team (ad es. per ingegneria e 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);