---
title: "Search結果の向上"
slug: "search-result-boosting"
abstract: "検索結果ブースティングを使って、インデックス内のトピックを他よりも高く評価します。"
---
# Search結果の向上

Sitecore XPでは、検索結果を増やす方法は2つあります。クエリ時間ブースティングとインデックスタイムブースティングです。

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

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

例を挙げます:

SOLR構文

LINQからSitecoreへ

\_name:Sitecore^4 CMS

.Where(c =&gt; 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パイプラインはアイテムレベルのブーストを解決します。このパイプラインで有効化されているプロセッサは以下の通りです:

<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**フィールドを使ってすべてのアイテムに設定することもできます。アイテムの**インデックスセクション**を見るには、**コンテンツエディター**の**「View**」タブで**「Standard Fields**」チェックボックスを選択してください。**Boost Value**フィールドはこのセクションにあります。

#### ルールベースのブースト

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

-   LocalRuleBasedItemBoostResolverプロセッサは**インデックス**セクションの**ブースティングルール**フィールドからルールを読み込みます。
    
    **ブースティングルール**フィールドのソースは、すべてのブースティングルールが管理される以下の場所に限定されています。
    
    */sitecore/system/設定/ルール/インデックス作成およびSearch/アイテムルール*
    
    このブーストルールのセットは、他のフィールド値と同様に **\_\_Standard値** レベルでも設定可能です。
    
-   GlobalRuleBasedItemBoostResolverプロセッサは*/sitecore/system/Settings/Indexing*および*Search/Rules/Global Rules*で作成されたすべてのブースティングルールを処理します。
    

パフォーマンスの観点からは、できるだけローカルブーストルールを活用してください。

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

アイテムごとにローカルで使うブースティングルールを作成するか、グローバルルールを作成できます。グローバルルールアイテムの子としてグローバルブースティングルールを作成します。アイテム**ルール**アイテムの子としてローカルブースティングルールを作成します。

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

1.  コンテンツツリー内のこの項目へ移動してください:
    
    */sitecore/system/設定/ルール/インデックス作成とSearch/*
    
2.  新しいローカルアイテムルールを作成するには、**アイテムルール** の項目を右クリックし、その後「\*\*挿入」\*\***ルール強化**をクリックします:
    
    ![6A73BD01A07D433787541138BF951DAA.png](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/101/platform-administration-and-architecture/images/6A73BD01A07D433787541138BF951DAA.png)
    
3.  **メッセージ**ダイアログで、新しいルールの名前を入力してください。例えば、すべてのアイテムを英語でブーストするブーストルールを作成できます:
    
    ![F86EC30A6DC04D10A430107349440C31.png](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/101/platform-administration-and-architecture/images/F86EC30A6DC04D10A430107349440C31.png)
    
4.  新しいルールを選択し、**データ** セクションで **「ルール編集**」をクリックします。 **ルールS\*\*\*\*etエディター** が開きます:
    
    ![71856DC1205945108B04EEA88B69C0E4.png](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/101/platform-administration-and-architecture/images/71856DC1205945108B04EEA88B69C0E4.png)
    
5.  ルールの条件を選択します。例えば、すべてのアイテムを英語で強化するルールを作成するには、「 **アイテムバージョン** 」セクションでリストから「アイテム言語が値と比較される条件」を選択し、以下のように条件を編集してください:
    
    ![30D40C68BCDC40C8A79E82A56C363892.png](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/101/platform-administration-and-architecture/images/30D40C68BCDC40C8A79E82A56C363892.png)
    
6.  **インデックス& Search**セクションで、アクション選択によるブースト調整を選択してください:
    
    ![E481AF09801245B79DBE7CDBEE683F05.png](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/101/platform-administration-and-architecture/images/E481AF09801245B79DBE7CDBEE683F05.png)
    
7.  ルール説明セクションで「選択」をクリックしてブースト値を調整してください。ブースト値はプラスまたはマイナスのどちらかです。