Definir sinônimos

As organizações geralmente têm uma terminologia exclusiva ou várias maneiras de se referir ao mesmo conceito. Definir sinônimos estabelece a equivalência de termos, ajudando os usuários a encontrar itens durante as pesquisas.

Defina sinônimos indexando itens com o esquema conhecido _dictionaryEntry.

Os itens do tipo _dictionaryEntry podem ter as seguintes propriedades:

Propriedade Tipo Descrição Obrigatório?
_term string O termo a ser definido. Os valores recomendados são palavras não hifenizadas ou frases sem pontuação. Obrigatório
_synonym string (repeated) Termos alternativos a serem incluídos nas consultas que correspondem à string definida em _term. Obrigatório
_onlyApplicableForAttachedSearchApplications boolean Permite agrupar sinônimos por fonte de dados e aplicativo de pesquisa. Para mais informações, consulte Definir sinônimos específicos da fonte de dados. Opcional

Quando um usuário inclui um valor _term em uma consulta, a consulta efetiva se torna "termo OR sinônimos". Por exemplo, se você definir "scifi" com o sinônimo "science fiction", uma consulta por "scifi" vai corresponder a itens que contenham qualquer um dos termos.

Os sinônimos não são bidirecionais por padrão. Uma consulta por "science fiction" só corresponde a essa frase exata, a menos que você também a defina como um termo com "scifi" como sinônimo. Para tornar os termos intercambiáveis, defina cada um separadamente:

Termo Sinônimos
scifi science fiction
science fiction scifi

O processamento de consultas remove hifens e pontuações antes de aplicar sinônimos. Uma consulta por "sci-fi" corresponde ao termo "sci fi". Para oferecer suporte a termos hifenizados, normalize o _term para usar espaços em branco em vez de hifens.

Exemplos intercambiáveis:

Termo Sinônimos
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

Por padrão, os sinônimos são aplicados em todo o domínio e em todos os aplicativos de pesquisa. Para limitar, consulte Definir sinônimos específicos da fonte de dados.

Definir sinônimos globais usando o SDK

Use o SDK do Content Connector para definir termos e sinônimos. Consulte Criar um conector de conteúdo para mais detalhes.

Este snippet cria um RepositoryDoc de um 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();
}

Considerações importantes:

  • As entradas de sinônimo precisam ser de domínio público. Por exemplo, você pode definir a ACL como DOMAIN_PUBLIC_ACL.
  • Evite configurações no arquivo de configuração que substituam isso, como defaultAcl.mode=FALLBACK ou defaultAcl.public=true.

Definir sinônimos específicos do aplicativo de pesquisa

Para fornecer sinônimos específicos da equipe (por exemplo, para engenharia x vendas), indexe cada sinônimo com _onlyApplicableForAttachedSearchApplications=true. Isso restringe os sinônimos a aplicativos de pesquisa que incluem a fonte de dados específica.

Exemplo:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);