Définir des synonymes

Les organisations utilisent souvent une terminologie propre ou différentes appellations pour désigner un même concept. En établissant des équivalences grâce aux synonymes, vous pouvez aider les utilisateurs à trouver l'information recherchée.

Définissez des synonymes en indexant des éléments à l'aide du schéma courant _dictionaryEntry.

Les éléments de type _dictionaryEntry peuvent avoir les propriétés suivantes :

Propriété Type Description Obligatoire ?
_term string Terme à définir. Utilisez de préférence des mots sans trait d'union ou des expressions sans ponctuation. Obligatoire
_synonym string (repeated) Autres termes à inclure dans les requêtes correspondant à la chaîne définie dans _term. Obligatoire
_onlyApplicableForAttachedSearchApplications boolean Permet de regrouper des synonymes par source de données et application de recherche. Pour en savoir plus, consultez Définir des synonymes spécifiques à une source de données. Facultatif

Lorsqu'un utilisateur inclut une valeur _term dans une requête, la requête effective devient "term OR synonyms". Par exemple, si vous définissez "scifi" avec le synonyme "science fiction", une requête pour "scifi" correspond aux éléments contenant l'un ou l'autre terme.

Les synonymes ne sont pas bidirectionnels par défaut. Une requête pour "science fiction" ne correspond qu'à cette expression exacte, sauf si vous la définissez également comme un terme avec "scifi" comme synonyme. Pour que les termes soient interchangeables, définissez-les séparément :

Terme Synonymes
scifi science fiction
science fiction scifi

Lors du traitement des requêtes, les traits d'union et la ponctuation sont supprimés avant l'application des synonymes. Une requête pour "sci-fi" correspond au terme "sci fi". Pour prendre en charge les termes avec trait d'union, normalisez le _term avec un espace au lieu d'un tiret.

Exemples de termes interchangeables :

Terme Synonymes
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

Par défaut, les synonymes s'appliquent à l'ensemble du domaine et à toutes les applications de recherche. Pour les limiter, consultez Définir des synonymes spécifiques à une source de données.

Définir des synonymes globaux à l'aide du SDK

Utilisez le SDK Content Connector pour définir des termes et des synonymes. Pour en savoir plus, consultez Créer un connecteur de contenu.

Cet extrait crée un RepositoryDoc à partir d'un enregistrement 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();
}

Remarques importantes :

  • Les synonymes saisis doivent être publics au sein du domaine. Par exemple, vous pouvez définir la LCA sur DOMAIN_PUBLIC_ACL.
  • Évitez les paramètres de votre fichier de configuration qui remplacent cette valeur, tels que defaultAcl.mode=FALLBACK ou defaultAcl.public=true.

Définir des synonymes spécifiques à une application de recherche

Pour fournir des synonymes spécifiques à une équipe (par exemple, pour l'ingénierie par rapport aux ventes), indexez chaque synonyme avec _onlyApplicableForAttachedSearchApplications=true. Cela limite les synonymes aux applications de recherche qui incluent la source de données spécifique.

Exemple :

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);