It's common for an organization to have unique terminology or multiple ways to refer to a concept or thing. You should define synonyms to establish equivalency of terms to helps users find items when searching.
Synonyms are defined by indexing items with the _dictionaryEntry
well-known
schema.
Items of type _dictionaryEntry
can have the following properties:
Property | Type | Description | Required? |
---|---|---|---|
_term |
string | The term to define. Recommended values are unhyphenated words or phrases without punctuation. | Required |
_synonym |
string (repeated) | Alternate terms to be included in queries matching the string defined in _term . |
Required |
_onlyApplicableForAttachedSearchApplications |
boolean | Allows you to group synonyms by data source and search application. For further information, see Define data source-specific synonyms. | Optional |
When a user includes the value of the _term
property in a query,
the effective query becomes "term OR synonyms." For example, if the
term "scifi" is defined with the synonym
"science fiction" then a query
containing the word "scifi" matches items containing
either "scifi"
or "science fiction."
Synonyms are not applied bidirectionally. If the query is instead for "science fiction," Cloud Search doesn't apply any synonyms to the query. The query only matches items containing "science fiction." Items containing "scifi" are omitted.
To make all both terms interchangeable, define each term separately:
Term | Synonyms |
---|---|
scifi | science fiction |
science fiction | scifi |
During query processing, hyphenation and other punctuation are removed prior
to applying synonyms. The user query "sci-fi"
matches the _term
"sci fi."
To create synonyms for terms which may be hyphenated by users, first normalize
the _term
to use whitespace instead of hyphens.
Continuing the example, the following definitions match the user queries treat "sci-fi," "sci fi," "scifi," and "science fiction" as interchangeable:
Term | Synonyms |
---|---|
scifi | science fiction, sci fi |
sci fi | science fiction, scifi |
science fiction | scifi, sci fi |
By default, synonyms in any data source apply across an entire domain. Specifically, synonyms are applied across search applications for all searches regardless of the data source. If you want data source-specific synonyms, refer to Define data source-specific synonyms.
Define global synonyms using the Cloud Search SDK
You can use the Content Connector SDK to define terms and their synonyms. See Create a content connector for instructions on building a connector.
The following snippet illustrates building a
RepositoryDoc
representing the term and synonym based on a CSV file record:
Note the following when defining synonyms:
- Synonym entries are required to be domain public. In the previous example,
this is accomplished by setting the ACL to
DOMAIN_PUBLIC_ACL
. - The following properties should not be defined for your configuration file
because they override the domain public setting in your code:
defaultAcl.mode=FALLBACK
defaultAcl.public=true
Define search application-specific synonyms
By default, synonyms are applied to all data sources across all search applications.
However, suppose your organization has separate engineering and sales teams, and
you want to provide each team with a different search experience, including
job role-specific synonyms. In this case, you could create one search
application with an engineering-specific data source and synonyms and another
search application with a sales-specific data source and synonyms. To accomplish
this goal, index each synonym in a specific data source
using _onlyApplicableForAttachedSearchApplications=true
. This
setting limits the synonyms such that they are only applied to search
applications that include a specific data source.
For example, adding the following line of code to the previous code sample ensures the indexed synonyms are data source-specific:
structuredData.put("_onlyApplicableForAttachedSearchApplications", true);