組織では、コンセプトやものごとを指し示すのに固有の用語や複数の方法が存在することがよくあります。ユーザーが検索時にアイテムを見つけるのに役立つように、類義語を定義して用語の同等性を確立する必要があります。
類義語は、よく知られたスキーマ _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 を使用してグローバルな類義語を定義する
コンテンツ コネクタ SDK を使用して、用語とその同義語を定義できます。コネクタを構築する方法については、コンテンツ コネクタを作成するをご覧ください。
次のスニペットは、CSV ファイル レコードに基づいて用語と類義語を表す RepositoryDoc
の構築を示しています。
類義語を定義する際は、以下の点に注意してください。
- 類義語エントリはドメイン公開にする必要があります。前述の例では、ACL を
DOMAIN_PUBLIC_ACL
に設定することによってこれを実現しています。 - 次のプロパティはコード内のドメイン公開設定をオーバーライドするため、構成ファイルに定義しないでください。
defaultAcl.mode=FALLBACK
defaultAcl.public=true
検索アプリケーション固有の類義語を定義する
デフォルトでは、類義語はすべての検索アプリケーションのすべてのデータソースに適用されます。
ただし、組織にエンジニアリング チームと営業チームがあり、職務に固有の類義語など、各チームに異なる検索エクスペリエンスを提供したいとします。この場合、エンジニアリング固有のデータソースと類義語を使用して 1 つの検索アプリケーションを作成し、販売固有のデータソースと類義語を使用して別の検索アプリケーションを作成できます。この目標を達成するには、_onlyApplicableForAttachedSearchApplications=true
を使用して、特定のデータソース内の各類義語をインデックスに登録します。この設定により、特定のデータソースを含む検索アプリケーションにのみ類義語が適用されるように制限されます。
たとえば、前のコードサンプルに次のコード行を追加すると、インデックスに登録された類義語がデータソース固有になります。
structuredData.put("_onlyApplicableForAttachedSearchApplications", true);