検索結果のブースティング

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore XPでは、クエリ時のブーストとインデックス時間のブーストの2つの方法で検索結果をブーストできます。

クエリ時間ブースト

クエリ時間ブーストを使用すると、実行時に個々のクエリの検索結果の内容とランク付けを制御できます。ユーザーが検索クエリを呼び出すときのコンテキストは、インデックスのコンパイル時には利用できない情報を提供し、これにより動的な対話の機会が増えます。たとえば、場所、訪問回数、ペルソナ、購入履歴などに基づいて検索クエリを呼び出すときに、フィールドのブースト値を増幅または削減できます。クエリ時ブースティングは現在LINQレイヤーでのみ使用できるため、開発者が実装する必要があります。

次に例を示します。

SOLR構文

LINQからSitecoreへ

_name:Sitecore^4 CMS

.Where(c => c.Name.Equals("Sitecore").Boost(4) || c.Name.Equals("CMS"))

この例では、項目名にSitecoreまたはCMSという単語、またはその両方が含まれている結果と、項目名にSitecoreが含まれている項目が、名前にCMSが含まれている項目よりも検索結果の上位に一覧表示されている結果を返します。

メモ

検索エンジンは、フィールドの長さを考慮に入れます。 CMSという名前のアイテムは、Sitecore is also a marketing automation toolなどの名前のアイテムよりも検索結果の上位に表示される可能性があります。

クエリ時間のブースティング:

  • インデックスタイムブースティングよりも正確です。

  • クエリごとに適用できます。

  • インデックス全体を再構築せずに変更できます。

インデックスタイム ブースティング

大事な

検索結果のブーストは、Solrバージョン6.6以前で動作します。ただし、Solr 7ではインデックスタイム ブースティングのサポートが削除されました。その結果、フィールド・レベルのブースティングはサポートされなくなり、提供されたブースティングはSolrによって無視されます。

Sitecore XP 10.0.0以降では、アイテム レベルのブースティングは、__boostフィールドでインデックス化され、query _val_:__boost関数を使用してクエリ スコアと組み合わされるインデックス時間スコアリング要素に依存します。

特定のアイテムがインデックス化されるときに、そのアイテムをブーストできます。これらのアイテムは、他のアイテムよりも高いスコアを獲得します。たとえば、ブースティングを使用して、書店で最も人気の高い書籍や最も売れた書籍を検索結果で宣伝できます。

フィールドレベルのブースティング

設定で指定されているブースト値はすべて無視されます。

アイテム レベルのブースティング

indexing.resolveItemBoostパイプラインは、項目レベルのブースティングを解決します。このパイプラインでは、次のプロセッサが有効になります。

<processor type="Sitecore.ContentSearch.Pipelines.ResolveBoost.
      ResolveItemBoost.ItemLocationFilter, Sitecore.ContentSearch">
    <includedLocations hint="list">
      <content>/sitecore/content</content>
      <media>/sitecore/media library</media>
    </includedLocations>
</processor>
<processor type="Sitecore.ContentSearch.Pipelines.ResolveBoost.
      ResolveItemBoost.StaticItemBoostResolver, Sitecore.ContentSearch"/>
<processor type="Sitecore.ContentSearch.Pipelines.ResolveBoost.
      ResolveItemBoost.LocalRuleBasedItemBoostResolver, Sitecore.ContentSearch"/>
<processor type="Sitecore.ContentSearch.Pipelines.ResolveBoost.
      ResolveItemBoost.GlobalRuleBasedItemBoostResolver, Sitecore.ContentSearch"/>

ItemLocationFilterプロセッサは、指定された場所にあるアイテムのみがパイプラインによって処理されるようにします。このリストは、次の方法で拡張できます。

<includedLocations hint="list">
   <content>/sitecore/content</content>
   <media>/sitecore/media library</media>
   <custom>/sitecore/custom</custom>
</includedLocations>

StaticItemBoostResolverプロセッサは、インデックス付き項目のブースト値を読み取ります。

この値は、__Standard Valuesフィールドを使用して、テンプレートに基づくすべてのアイテムに設定することもできます。アイテムのIndexingセクションを表示するには、Content EditorViewタブでStandard Fieldsチェックボックスをオンにする必要があります。Boost Valueフィールドはこのセクションにあります。

ルールベースのブースティング

LocalRuleBasedItemBoostResolverプロセッサとGlobalRuleBasedItemBoostResolverプロセッサは、インデックス付きアイテムに対してルールベースのブースティングを提供します。これら2つのプロセッサは、どちらもルール エンジンを使用して実行されます。彼らはさまざまな場所でブースティングルールを調べます。

  • LocalRuleBasedItemBoostResolverプロセッサは、IndexingセクションのBoosting rulesフィールドからルールを読み取ります。

    Boosting rulesフィールドのソースは、すべてのブースティングルールが管理されている次の場所に制限されています。

    /sitecore/system/Settings/Rules/Indexing and Search/Item Rules

    このブースティング ルールのセットは、他のフィールド値と同様に、__Standard Valuesレベルで設定することもできます。

  • GlobalRuleBasedItemBoostResolverプロセッサは、/sitecore/system/Settings/IndexingSearch/Rules/Global Rulesで作成されたすべてのブースティング ルールを処理します。

パフォーマンス上の理由から、可能な限りローカルのブースティングルールを使用してください。

ブースティングルールを作成する

アイテムごとにローカルで使用されるブースティング ルール、またはグローバル ルールを作成できます。グローバル ブースティング ルールはGlobal Rulesアイテムの子として作成し、ローカル ブースティング ルールはItem Rulesアイテムの子として作成します。

ブースティングルールを作成するには:

  1. コンテンツ ツリーで次の項目に移動します。

    /sitecore/system/Settings/Rules/Indexing and Search/

  2. 新しいローカル項目ルールを作成するには、Item Rules項目を右クリックし、Insert,Boosting Ruleをクリックします。

  3. Messageダイアログで、新しいルールの名前を入力します。たとえば、英語のすべての項目をブーストするブースティング ルールを作成できます。

  4. 新しいルールを選択し、DataセクションでEdit ruleをクリックします。 Rule Set Editorが開きます。

  5. ルールの条件を選択します。たとえば、英語のすべての項目をブーストするルールを作成するには、Item Versionセクションで、リストから項目の言語が値と比較される場所条件を選択し、条件を次のように編集します。

  6. Indexing & Searchセクションで、selectによるブーストの調整アクションを選択します。

  7. ルールの説明 セクションで、選択をクリックし、ブースト値を調整します。ブースト値は、正または負の数値のいずれかです。

この記事を改善するための提案がある場合は、 お知らせください!