Search結果の向上
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecore XPでは、検索結果を増やす方法は2つあります。クエリ時間ブースティングとインデックスタイムブースティングです。
クエリ時間ブースティング
クエリタイムブースティングは、実行時に個々のクエリの検索結果の内容や順位を制御できます。ユーザーが検索クエリを呼び出した際のコンテキストは、インデックスのコンパイル時に得られない情報を提供し、動的なインタラクションの機会を増やします。例えば、検索クエリを呼び出した際に、場所、訪問数、ペルソナ、購入履歴などに基づいてフィールドのブースティング値を増減させることができます。クエリタイムブースティングは現在LINQレイヤーでのみ利用可能であるため、開発者が実装する必要があります。
例を挙げます:
SOLR構文
LINQからSitecoreへ
_name
^4 CMS.Where(c => c.Name.Equals("Sitecore").Boost(4) || c.Name.Equals("CMS"))
この例では、アイテム名にSitecoreまたはCMS、またはその両方が含まれている結果を返し、Sitecoreが含まれるアイテムは、CMSを含むアイテムよりも検索結果の上位に表示されます。
!注Searchエンジンはフィールドの長さを考慮します。 CMSという名前のアイテムは、例えば マーケティングオートメーションツールでもあるSitecoreという名前の項目よりも検索結果の上位に表示されることがあります。
クエリ時間のブースティング:
- インデックス時間ブーストよりも正確です。
- クエリごとに適用可能です。
- インデックス全体を再構築せずに変更可能です。
インデックス時間ブースティング
!重要Search結果ブーストはSolrバージョン6.6以前で動作します。しかし、Solr 7ではインデックス時間ブーストのサポートが削除されました。その結果、フィールドレベルのブーストはサポートされなくなり、提供されたブーストもSolrによって無視されます。
Sitecore XP 10.0.0以降では、項目レベルのブースティングは__boostフィールドでインデックスされたインデックス時間スコア因子と、query _val_:__boost関数を用いたクエリスコアの組み合わせに依存しています。
特定のアイテムはインデックス化されるとブーストできます。これらのアイテムは他のアイテムよりも高いスコアを得ます。例えば、ブーストを使って書店で最も人気のある本や最も売れた本を検索結果で宣伝することができます。
フィールドレベルブースト
構成内で提供されているブースト値は無視されます。
アイテムレベルブースト
indexing.resolveItemBoostパイプラインはアイテムレベルのブーストを解決します。このパイプラインで有効化されているプロセッサは以下の通りです:
ItemLocationFilterプロセッサは指定された場所にあるアイテムのみがパイプラインで処理されることを保証します。このリストは次のように拡張できます:
StaticItemBoostResolverプロセッサはインデックス項目のブースト値を読み取ります。
この値はテンプレートに基づく**__Standard Valuesフィールドを使ってすべてのアイテムに設定することもできます。アイテムのインデックスセクションを見るには、コンテンツエディターの「View**」タブで**「Standard Fields**」チェックボックスを選択してください。Boost Valueフィールドはこのセクションにあります。
ルールベースのブースト
LocalRuleBasedItemBoostResolverプロセッサとGlobalRuleBasedItemBoostResolverプロセッサは、インデックスされたアイテムに対してルールベースのブーストを提供します。これら2つのプロセッサはどちらもルールエンジンを使って実行されます。異なる場所でブースティングルールを調べます:
-
LocalRuleBasedItemBoostResolverプロセッサはインデックスセクションのブースティングルールフィールドからルールを読み込みます。
ブースティングルールフィールドのソースは、すべてのブースティングルールが管理される以下の場所に限定されています。
/sitecore/system/設定/ルール/インデックス作成およびSearch/アイテムルール
このブーストルールのセットは、他のフィールド値と同様に __Standard値 レベルでも設定可能です。
-
GlobalRuleBasedItemBoostResolverプロセッサは*/sitecore/system/Settings/IndexingおよびSearch/Rules/Global Rules*で作成されたすべてのブースティングルールを処理します。
パフォーマンスの観点からは、できるだけローカルブーストルールを活用してください。
ブースティングルールを作成する
アイテムごとにローカルで使うブースティングルールを作成するか、グローバルルールを作成できます。グローバルルールアイテムの子としてグローバルブースティングルールを作成します。アイテムルールアイテムの子としてローカルブースティングルールを作成します。
ブースティングルールを作成するには:
-
コンテンツツリー内のこの項目へ移動してください:
/sitecore/system/設定/ルール/インデックス作成とSearch/
-
新しいローカルアイテムルールを作成するには、アイテムルール の項目を右クリックし、その後「**挿入」**ルール強化をクリックします:

-
メッセージダイアログで、新しいルールの名前を入力してください。例えば、すべてのアイテムを英語でブーストするブーストルールを作成できます:

-
新しいルールを選択し、データ セクションで 「ルール編集」をクリックします。 ルールS****etエディター が開きます:

-
ルールの条件を選択します。例えば、すべてのアイテムを英語で強化するルールを作成するには、「 アイテムバージョン 」セクションでリストから「アイテム言語が値と比較される条件」を選択し、以下のように条件を編集してください:

-
インデックス& Searchセクションで、アクション選択によるブースト調整を選択してください:

-
ルール説明セクションで「選択」をクリックしてブースト値を調整してください。ブースト値はプラスまたはマイナスのどちらかです。