Определение синонимов

В организациях часто используется уникальная терминология или несколько способов обозначения одного и того же понятия. Определение синонимов устанавливает эквивалентность терминов, помогая пользователям находить нужные элементы при поиске.

Синонимы определяются путем индексирования элементов с использованием общеизвестной схемы _dictionaryEntry .

Элементы типа _dictionaryEntry могут обладать следующими свойствами:

Свойство Тип Описание Необходимый?
_term string Термин для определения. Рекомендуемые значения — это слова или фразы без дефисов и знаков препинания. Необходимый
_synonym string (repeated) Альтернативные термины, которые будут включены в запросы, соответствующие строке, определенной в _term . Необходимый
_onlyApplicableForAttachedSearchApplications boolean Позволяет группировать синонимы по источнику данных и приложению поиска. Для получения дополнительной информации см. раздел «Определение синонимов для конкретного источника данных» . Необязательный

When a user includes a _term value in a query, the effective query becomes " term OR synonyms ." For example, if you define "scifi" with the synonym "science fiction" , a query for "scifi" matches items containing either term.

Synonyms aren't bidirectional by default. A query for "science fiction" only matches that exact phrase unless you also define it as a term with "scifi" as a synonym. To make terms interchangeable, define each one separately:

Срок Синонимы
scifi science fiction
science fiction scifi

Query processing removes hyphenation and punctuation before applying synonyms. A query for "sci-fi" matches the term "sci fi" . To support hyphenated terms, normalize the _term to use whitespace instead of hyphens.

Взаимозаменяемые примеры:

Срок Синонимы
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

По умолчанию синонимы применяются ко всему домену и всем поисковым приложениям. Чтобы ограничить их использование, см. раздел «Определение синонимов для конкретных источников данных» .

Определяйте глобальные синонимы с помощью SDK.

Используйте SDK Content Connector для определения терминов и синонимов. Подробности см. в разделе «Создание коннектора контента» .

Этот фрагмент кода создает объект RepositoryDoc на основе записи из 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();
}

Важные замечания:

  • Записи синонимов должны быть общедоступными для домена. Например, вы можете установить ACL на DOMAIN_PUBLIC_ACL .
  • Избегайте использования в конфигурационном файле параметров, которые переопределяют это, таких как defaultAcl.mode=FALLBACK или defaultAcl.public=true .

Определите синонимы, специфичные для конкретного поискового приложения.

To provide team-specific synonyms (eg, for engineering versus sales), index each synonym with _onlyApplicableForAttachedSearchApplications=true . This restricts the synonyms to search applications that include the specific data source.

Пример:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);