SharePoint で検索結果をカスタマイズする
SharePoint の検索結果セットで、類似したアイテムのグループ化、または重複したアイテムの削除を実行して、結果を簡潔に読みやすく表示できるようにする方法について説明します。
検索結果では、グループ化によって複数の類似アイテムが 1 つの検索結果セットに折りたたまれるため、ユーザーにとって読みやすい表示になります。 検索結果の重複削除は、グループ化の一部です。このグループ化では、同じアイテムまたはほとんど同じアイテムが結果セットから削除されます。 SharePoint 管理者が設定した設定内容に応じて、ユーザーは後で検索結果セットを展開して、折りたたまれていた個々の結果を確認することもできます。
次に、検索結果をグループ化する方法の例を示します。
- 重複の検出。ほぼ同一のドキュメントは結果セットから削除されます。
- サイトの折りたたみ。各サイトで検出されたアイテムのうち最も関連したアイテムだけが結果セットに表示されます。
- ドキュメント セットの折りたたみ。SharePoint の各ドキュメント ライブラリに対してヒットしたものが 1 つだけが表示されます。
Query オブジェクト モデル内で次の KeywordQuery プロパティを使用して、折りたたみまたは重複トリミングの条件をプログラムで指定できます。
- CollapseSpecification
- TrimDuplicates
- TrimDuplicatesOnProperty
- TrimDuplicatesKeepCount
- TrimDuplicatesIncludeId
CollapseSpecification プロパティを使用して、類似した検索結果を折りたたむ
CollapseSpecification プロパティは、コンマまたはスペースのどちらかで区切って複数のフィールドを含められる Spec パラメーターをとります。まとめて評価される、これらのフィールドによって、折りたたみに使用する基準のセットを指定します。
構文CollapseSpecification = Spec
次の表に 、Spec パラメーターのフィールドを示します。
表 1. Spec パラメーター フィールド
パラメーターの要素 | 説明 |
---|---|
Spec | Subspec(<space>Subspec)* |
Subspec | Prop(','Prop)*[':'Dups] |
Prop | 有効な管理プロパティまたは管理プロパティの別名。 Prop は大文字と小文字の区別をしません。 管理プロパティはクエリを実行できる必要があり、並べ替えまたは絞り込みを実行できる必要があります。 |
Dups | 保持するアイテムの数を指定する整数。 既定値は 1 です。 |
<スペース> | プロパティは、 OR 演算子を使用して結合されます。 |
, | プロパティは、 AND 演算子を使用して結合されます。 |
* | さらにアイテムが続くことを示します。 |
() or [] | オプションのアイテムを示します。 |
Spec のフィールドがコンマで区切られている場合、フィールドは AND 演算子を使用して結合されます。 指定したフィールドすべてに一致すると、そのアイテムは折りたたまれます。
一方、 Spec のフィールドがスペースで区切られている場合、フィールド (または Subspec) は 、AND 演算子と OR 演算子の両方を含む拡張を使用して結合されます。 たとえば、 などの Category:3 Product:2
式は、それぞれのカウンターを使用して内部的に次の式 (Category AND Product) OR (Category)
に変換されます。したがって、前者の最大 2 つ、後者の 3 つを指定します。 指定したフィールドの一部が一致すると、項目が折りたたまれます。
CollapseSpecification の使用例
次の表に、Contoso 社の製品カタログを示します。 以下の一連の例では、このカタログを使用して、 CollapseSpecification プロパティがどのように動作するかを示します。
カテゴリ | 製品 | バリアント型 | Title |
---|---|---|---|
ラップトップ | WWI | 19W X0196 黒 | コンピューター 1 |
ラップトップ | Adventure Works | 12 M1201 赤 | コンピューター 2 |
ラップトップ | Adventure Works | 15.4W M1548 白 | コンピューター 3 |
ラップトップ | Proseware | 19 X910 黒 | コンピューター 4 |
ラップトップ | Proseware | ノート PC 19 X910 黒 | コンピューター 5 |
デスクトップ | Adventure Works | 2.33 XD233 シルバー | コンピューター 6 |
デスクトップ | WWI | 2.33 X2330 黒 | コンピューター 7 |
デスクトップ | Adventure Works | 1.60 ED160 白 | コンピューター 8 |
デスクトップ | WWI | 3.0 M0300 シルバー | コンピューター 9 |
例: Category によるグループ化
まず、 Category に基づいてアイテムをグループ化し、グループごとに上位 2 つ (つまり "Category:2"
) を表示します。 次に、各 Category について、対応する数の一意な (つまり "Product:1" の) Products を表示します。
構文CollapseSpecification="Category:2 Product:1"
これにより次のような結果が戻ります。
カテゴリ | 製品 | バリアント型 | Title |
---|---|---|---|
ラップトップ | WWI | 19W X0196 黒 | コンピューター 1 |
ラップトップ | Adventure | 12 M1201 赤 | コンピューター 2 |
デスクトップ | Adventure Works | 2.33 XD233 シルバー | コンピューター 6 |
デスクトップ | WWI | 2.33 X2330 黒 | コンピューター 7 |
CollapseSpecification プロパティを使用して検索結果を折りたたむには、次のコードを使用します。
using (var context = new ClientContext("http://localhost"))
{
var query = new KeywordQuery(context)
{
QueryText = "Title:Computer",
CollapseSpecification = "Category:3 Product:1",
};
var executor = new SearchExecutor(context);
var results = executor.ExecuteQuery(query);
context.ExecuteQuery();
foreach (var result in results.Value[0].ResultRows)
{
Console.WriteLine(result["Title"]);
}
}
例: Category および Product によるグループ化
まず、 Category および Product に基づいてアイテムをグループ化します。 次に、独特の組合せをそれぞれ表示します。
構文CollapseSpecification="Category,Product:1"
これにより次のような結果が戻ります。
カテゴリ | 製品 | バリアント型 | Title |
---|---|---|---|
ラップトップ | WWI | 19W X0196 黒 | コンピューター 1 |
ラップトップ | Adventure Works | 12 M1201 赤 | コンピューター 2 |
ラップトップ | Proseware | 19 X910 黒 | コンピューター 4 |
デスクトップ | Adventure Works | 2.33 XD233 シルバー | コンピューター 6 |
デスクトップ | WWI | 2.33 X2330 黒 | コンピューター 7 |
TrimDuplicates プロパティを使用して、重複した検索結果を取り除く
TrimDuplicates を使用して、結果セットから重複した検索結果を取り除くかどうかを指定します。 既定では TrimDuplicates は true です。
TrimDuplicates を TrimDuplicatesOnProperty または、望ましくは CollapseSpecification と共に使用する場合、 TrimDuplicates は false に設定されます。
構文TrimDuplicates = <$true | $false>
TrimDuplicatesOnProperty プロパティを使用して、重複した検索結果を取り除く
TrimDuplicatesOnProperty を使用して、既定以外の管理プロパティを、重複の削除の基準として使用するかどうかを指定します。 既定値は、 DocumentSignature 管理プロパティです。 管理プロパティは Integer 型または String 型である必要があります。 アイテムのグループ化を表す管理プロパティを使用して、この機能をフィールドの折りたたみに使用できます。
構文TrimDuplicatesOnProperty = <managed property>
注:
SharePoint では、可能な場合は常に CollapseSpecification を使用してください。 TrimDuplicatesOnProperty は、下位互換性を維持するためにのみ使用できます。
TrimDuplicatesKeepCount プロパティを使用して重複する検索結果をトリミングする
TrimDuplicates が true の場合、 TrimDuplicatesKeepCount を使用して、保持するドキュメントの数を指定します。 TrimDuplicates が、グループ ID (たとえば、サイト ID) として使用できる管理プロパティに基づいている場合、グループごとに戻す結果の数を制御できます。 戻されるアイテムは、各グループ内で最も動的ランクの高いものです。
構文TrimDuplicatesKeepCount = <number>
TrimDuplicatesIncludeId プロパティを使用して、重複した検索結果を取得する
TrimDuplicates が true で、 TrimDuplicatesOnProperty または CollapseSpecification が false に設定されている場合、 TrimDuplicatesIncludeId を使用して、重複したドキュメントを取得します。
ドキュメント ID docid は、特定のドキュメントの重複を取得するために使用されます。
構文TrimDuplicatesIncludeId = <docid>
注:
FAST Search Server 2010 for SharePoint の fcoid 管理プロパティは、SharePoint の docid 管理プロパティに置き換えられました。