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.

Para definir sinónimos, indexa 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) Términos alternativos que se incluirán en las consultas 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 Define sinónimos específicos de la fuente de datos. Opcional

Cuando un usuario incluye un valor _term en una consulta, la consulta efectiva se convierte en "term OR synonyms". Por ejemplo, si defines "scifi" con el sinónimo "science fiction", una consulta de "scifi" coincide con los elementos que contienen cualquiera de los términos.

Los sinónimos no son bidireccionales de forma predeterminada. Una consulta 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 que los términos sean intercambiables, define cada uno por separado:

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

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

Ejemplos intercambiables:

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 en todo el dominio y en todas las aplicaciones de búsqueda. Para limitarlos, consulta Define sinónimos específicos de la fuente de datos.

Define sinónimos globales con el SDK

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

Este fragmento compila un 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 configurar la LCA como DOMAIN_PUBLIC_ACL.
  • Evita la configuración en el archivo de configuración que anule esto, como defaultAcl.mode=FALLBACK o defaultAcl.public=true.

Define 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);