Define sinónimos

A menudo, las organizaciones tienen terminología única o varias maneras de referirse al mismo concepto. Definir sinónimos establece la equivalencia de términos, lo que ayuda a los usuarios a encontrar elementos durante las búsquedas.

Define sinónimos indexando elementos con el esquema conocido _dictionaryEntry.

Los elementos de tipo _dictionaryEntry pueden tener las siguientes propiedades:

Propiedad Tipo Descripción ¿Obligatorio?
_term string El término que se desea definir. Los valores recomendados son palabras sin guiones o frases sin puntuación. Obligatorio
_synonym string (repeated) Son los términos alternativos que se incluirán en las búsquedas que coincidan con la cadena definida en _term. Obligatorio
_onlyApplicableForAttachedSearchApplications boolean Te permite agrupar sinónimos por fuente de datos y aplicación de búsqueda. Para obtener más información, consulta Cómo definir sinónimos específicos de la fuente de datos. Opcional

Cuando un usuario incluye un valor de _term en una búsqueda, la búsqueda efectiva se convierte en "término O sinónimos". Por ejemplo, si defines "scifi" con el sinónimo "science fiction", una búsqueda de "scifi" coincidirá con los elementos que contengan cualquiera de los términos.

Los sinónimos no son bidireccionales de forma predeterminada. Una búsqueda de "science fiction" solo coincide con esa frase exacta, a menos que también la definas como un término con "scifi" como sinónimo. Para hacer que los términos sean intercambiables, debes definir cada uno por separado:

Término Sinónimos
scifi science fiction
science fiction scifi

El procesamiento de la búsqueda quita la separación de palabras y la puntuación antes de aplicar los sinónimos. Una búsqueda de "sci-fi" coincide con el término "sci fi". Para admitir términos con guiones, normaliza _term para usar espacios en blanco en lugar de guiones.

Ejemplos de intercambiabilidad:

Término Sinónimos
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

De forma predeterminada, los sinónimos se aplican a todo el dominio y a todas las aplicaciones de búsqueda. Para limitarlos, consulta Cómo definir sinónimos específicos de la fuente de datos.

Define sinónimos globales con el SDK

Usa el SDK de Content Connector para definir términos y sinónimos. Consulta Crea un conector de contenido para obtener más detalles.

En este fragmento, se compila un objeto RepositoryDoc a partir de un registro 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();
}

Consideraciones importantes:

  • Las entradas de sinónimos deben ser de dominio público. Por ejemplo, puedes establecer la LCA en DOMAIN_PUBLIC_ACL.
  • Evita la configuración en tu archivo de configuración que anule este parámetro, como defaultAcl.mode=FALLBACK o defaultAcl.public=true.

Cómo definir sinónimos específicos de la aplicación de búsqueda

Para proporcionar sinónimos específicos del equipo (p.ej., para ingeniería en comparación con ventas), indexa cada sinónimo con _onlyApplicableForAttachedSearchApplications=true. Esto restringe los sinónimos a las aplicaciones de búsqueda que incluyen la fuente de datos específica.

Ejemplo:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);