Définir des synonymes

Les organisations utilisent souvent une terminologie propre ou différentes appellations pour désigner un même concept. En définissant des synonymes, vous établissez des équivalences entre les termes, ce qui aide les utilisateurs à trouver des éléments lors de leurs recherches.

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 Vous permet de regrouper les synonymes par source de données et par application de recherche. Pour en savoir plus, consultez Définir des synonymes spécifiques à une source de données. Facultatif

Lorsqu'un utilisateur ajoute une valeur _term dans une requête, la requête réelle devient terme OU synonymes. Par exemple, si vous définissez "scifi" comme synonyme de "science fiction", une requête pour "scifi" renverra les éléments contenant l'un ou l'autre de ces termes.

Par défaut, les synonymes ne sont pas bidirectionnels. Une requête pour "science fiction" ne renverra que cette expression exacte, sauf si vous la définissez également comme 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

Le traitement des requêtes supprime les traits d'union et la ponctuation avant d'appliquer les 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 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);