В организациях часто используется уникальная терминология или существуют различные способы обозначения одного понятия или предмета. Для обеспечения эквивалентности терминов и облегчения поиска пользователям следует определить синонимы.
Синонимы определяются путем индексации элементов с использованием общеизвестной схемы _dictionaryEntry
.
Элементы типа _dictionaryEntry
могут иметь следующие свойства:
Свойство | Тип | Описание | Необходимый? |
---|---|---|---|
_term | string | Термин, который необходимо определить. Рекомендуемые значения: слова или фразы без дефисов и знаков препинания. | Необходимый |
_synonym | string (repeated) | Альтернативные термины, которые следует включить в запросы, соответствующие строке, определенной в _term . | Необходимый |
_onlyApplicableForAttachedSearchApplications | boolean | Позволяет группировать синонимы по источнику данных и поисковому приложению. Подробнее см. в разделе Определение синонимов, специфичных для источника данных . | Необязательный |
Когда пользователь включает значение свойства _term
в запрос, эффективный запрос становится « term OR synonyms ». Например, если термин "scifi" определён синонимом "science fiction" то запрос, содержащий слово "scifi" будет соответствовать элементам, содержащим либо "scifi" , либо "science fiction."
Синонимы не применяются в обоих направлениях. Если запрос содержит слово "science fiction," Cloud Search не применяет к нему синонимы. Запросу соответствуют только элементы, содержащие "science fiction." Элементы, содержащие "scifi" исключаются.
Чтобы сделать оба термина взаимозаменяемыми, дайте определение каждому термину отдельно:
Срок | Синонимы |
---|---|
scifi | science fiction |
science fiction | scifi |
При обработке запроса переносы и другие знаки препинания удаляются перед применением синонимов. Пользовательский запрос "sci-fi" соответствует _term
"sci fi." Чтобы создать синонимы для терминов, которые пользователи могут использовать через дефис, сначала нормализуйте _term
, используя пробелы вместо дефисов.
Продолжая пример, следующие определения соответствуют запросам пользователей, рассматривая "sci-fi," "sci fi," "scifi," и "science fiction" как взаимозаменяемые:
Срок | Синонимы |
---|---|
scifi | science fiction, sci fi |
sci fi | science fiction, scifi |
science fiction | scifi, sci fi |
По умолчанию синонимы в любом источнике данных применяются ко всему домену. В частности, синонимы применяются во всех поисковых приложениях независимо от источника данных. Если вам нужны синонимы, специфичные для источника данных, см. раздел Определение синонимов, специфичных для источника данных .
Определите глобальные синонимы с помощью Cloud Search SDK
Вы можете использовать Content Connector SDK для определения терминов и их синонимов. Инструкции по созданию коннектора см. в разделе «Создание коннектора контента ».
В следующем фрагменте показано создание RepositoryDoc
, представляющего термин и синоним, на основе записи CSV-файла:
При определении синонимов обратите внимание на следующее:
- Записи синонимов должны быть общедоступными в домене. В предыдущем примере это достигается установкой ACL в значение
DOMAIN_PUBLIC_ACL
. - Следующие свойства не следует определять для вашего файла конфигурации, поскольку они переопределяют публичные настройки домена в вашем коде:
-
defaultAcl.mode=FALLBACK
-
defaultAcl.public=true
-
Определите синонимы, специфичные для поискового приложения
По умолчанию синонимы применяются ко всем источникам данных во всех поисковых приложениях.
Однако предположим, что в вашей организации есть отдельные отделы инженерии и продаж, и вы хотите предоставить каждой из них отдельный поисковый интерфейс, включая синонимы, специфичные для должностей. В этом случае вы можете создать одно поисковое приложение с источником данных и синонимами, специфичными для инженерии, и другое поисковое приложение с источником данных и синонимами, специфичными для продаж. Для этого индексируйте каждый синоним в определённом источнике данных, используя _onlyApplicableForAttachedSearchApplications=true
. Этот параметр ограничивает синонимы таким образом, что они применяются только к поисковым приложениям, включающим определённый источник данных.
Например, добавление следующей строки кода к предыдущему примеру кода гарантирует, что индексированные синонимы будут специфичны для источника данных:
structuredData.put("_onlyApplicableForAttachedSearchApplications", true);