SharePoint サイト上のデータを検索するために使用できる Web パーツは 2 つあります。 コンテンツ クエリ Web パーツ (CQWP) とコンテンツ検索 Web パーツ (CSWP) とよく似ています。 その名前を見ただけでは、2 つの違いをはっきり区別することはできません。
ほとんどの場合、コンテンツ クエリ Web パーツほどパフォーマンスに影響しないため、コンテンツ検索 Web パーツの使用をお勧めします。
2 つの Web パーツの長所と制限事項を理解しておくことが重要です。 ほとんどの場合、コンテンツ クエリ Web パーツほどパフォーマンスに影響しないため、コンテンツ検索 Web パーツの使用をお勧めします。
-
コンテンツの量が限られている、クエリが単純である、そして将来コンテンツが大幅に増加しないと予想される場合は、CQWP を使います。
-
クエリに基づいてコンテンツを表示する他のすべてのシナリオでは、CSWP を使います。
次の表は、2 つの Web パーツの比較を示しています。
Web パーツの動作 |
コンテンツ クエリ Web パーツ |
コンテンツ検索 Web パーツ |
---|---|---|
クエリの構成 |
簡易的 |
SharePoint Online での検索スキーマの管理など、特定の検索機能について理解しておく必要があります。 |
大量のコンテンツ間のクエリ |
限定的 |
○ |
複雑なクエリの処理 |
限定的 |
○ |
将来のコンテンツの増加に対応するためのサイズ変更 |
限定的 |
○ |
他のサイト コレクションのコンテンツの表示 |
× |
はい (以下 の「コンテンツ検索 Web パーツを使用して他のサイト コレクションのコンテンツを表示する 」を参照) |
クエリ結果のデザインをカスタマイズできる |
可 (XSLT を使用) |
可 (HTML を使用) |
複雑なサイト アーキテクチャのメンテナンス コスト |
高 |
小規模 ( 以下の「コンテンツ検索 Web パーツを使用してメンテナンス コストを削減する 」を参照) |
Web パーツに表示されるクエリ結果の絞り込み |
× |
可 (絞り込み Web パーツと組み合わせる) |
両方の Web パーツを使って、サブサイトに格納されている情報を表示できます。 コンテンツ作成者とホーム サイト訪問者のためのユーザー エクスペリエンスは、どちらの Web パーツを使っても同じです。 2 つの Web パーツの違いは、Web パーツで使われる技術です。 CQWP はデータベースに対してクエリを実行して、CSWP は検索インデックスに対してクエリを実行します。
次に Web パーツの動作の例を示します。 例 A は、CQWP を使って販売サブサイトのコンテンツを表示する会社を示し、例 B は、CSWP を使って販売サブサイトのコンテンツを表示する会社を示しています。
画像の吹き出し |
例 A: コンテンツ クエリ Web パーツ |
例 B: コンテンツ検索 Web パーツ |
---|---|---|
1 |
リスト内にコンテンツを作成します。 |
リスト内にコンテンツを作成します。 |
2 |
リスト アイテムは、直ちにデータベースに格納されます。 |
設定された時間間隔で、リスト アイテムは自動的にクロールされ、検索インデックスに追加されます。 |
3 |
訪問者がホーム サイトを表示します。 CQWP によって、データベースに自動的にクエリが発行されます。 |
訪問者がホーム サイトを表示します。 CSWP によって、検索インデックスに自動的にクエリが発行されます。 |
4 |
データベースからクエリ結果が返され、CQWP にクエリ結果が表示されます。 |
検索インデックスからクエリ結果が返され、CSWP にクエリ結果が表示されます。 |
Web パーツではさまざまな技術が使われるため、いずれか一方の Web パーツを選ぶ必要のあるユース ケースは異なります。 ユース ケースは、多くの場合、前述のセクションで示した単純な例よりも複雑です。 使う Web パーツを決める前に、次のことを検討することが重要です。
-
保有しているコンテンツの量
-
クエリの複雑さの程度
-
コンテンツの格納場所
-
時間の経過とともにコンテンツはどの程度増加するか
-
時間の経過とともにメンテナンス コストはどの程度増加するか
このような分野すべてに個別に対応するのではなく、まとめて対応することをお勧めします。
注: オンプレミスの SharePoint サイトから SharePoint Online サイトに移行することを検討しており、オンプレミスの SharePoint サイトで CQWP を使っている場合は、いくつかのパフォーマンス問題が発生する可能性があります。 SharePoint Online では、パフォーマンスを向上させるためにテナントを拡張することはできません。 またキャッシュ機能の動作が、SharePoint Online とオンプレミスの SharePoint とでは異なります。
コンテンツ クエリ Web パーツのパフォーマンスに影響する内容
前述の例では、ニュース リストに含まれているアイテムの数が 5000 個未満の場合、CQWP のパフォーマンスは非常に良い可能性があります。 ただし、ニュース リストに 5000 個を超えるアイテムが含まれ、CQWP のクエリが複雑な場合は、Web パーツでパフォーマンス問題が発生する可能性があります。 複雑なクエリとは何かを正確に定義するのは困難ですが、サイト コレクション内のすべてサイトに渡るソースは、特定のリストに対してクエリを実行するソースよりも複雑です。 またクエリで追加フィルターが使われると、クエリはより複雑になります。 クエリの複雑さは、使うサイト列の種類と条件に応じて増大します。 以下にいくつか例を示します。
-
複数 行のテキスト型のサイト列をフィルター処理するクエリは、Yes/No 型のサイト列をフィルター処理するクエリよりも複雑です。
-
[次の文字を含む] 条件を使うフィルターは、[が次の値に等しい] 条件を使うクエリよりも複雑です。
-
複数の OR 条件を使うと、クエリはより複雑になります。
CQWP のパフォーマンスは、コンテンツが格納される場所にも影響を受けます。 コンテンツが複数のサイトにまたがって格納される場合は、Web パーツで処理しなければならないリスト アイテムの合計数がパフォーマンスに影響します。 たとえば、会社のホーム サイトで、複数のサブサイトに保持されているリストにある最新のニュース アイテムを表示するとします。 各リストには 1000 個のアイテムが含まれています。 つまり、CQWP は 3000 個のアイテムに対してクエリを実行する必要があります。
この例では、クエリが単純であれば、アイテムの合計数が 5000 個未満である限りは、CQWP のパフォーマンスは良い可能性があります。 しかしクエリが複雑であれば、アイテムの合計数が 2 ~ 3000 個であっても、CQWP でパフォーマンス問題が発生する可能性があります。
CQWP のパフォーマンスに影響を及ぼすもう 1 つの重要な要因は、コンテンツが増加するかどうかです。 現在適切に機能しているソリューションが、将来のコンテンツに適用できない場合があります。 サイトの数やコンテンツの量の大幅な増加が見込まれる場合は、CQWP を使わないでください。
両方の Web パーツを使って、サイト ナビゲーションの情報に基づくコンテンツを表示できます。 たとえば、訪問者がページを訪問したとき、そのページの Web パーツによって、サイト ナビゲーションの情報を含むクエリが自動的に発行されます。 検索結果が Web パーツに表示されます。 保有しているコンテンツがそれほど多くなく、クエリが単純な場合は、いくつかの CQWP を使ってコンテンツを表示できます。 ただし、各 CQWP を個別にメンテナンスする必要があるため、メンテナンス コストが急速に増加する可能性があります。
管理ナビゲーションとカテゴリ ページで CSWP を使うと、コンテンツが増加しても、メンテナンス コストは変わりません。 たとえば、新しいナビゲーション カテゴリをコンテンツに追加した場合、同じカテゴリ ページを使って、新しいナビゲーション カテゴリに含まれるコンテンツを表示できます。 そのためコンテンツが増加しても、同じページ数をメンテナンスするだけですみます。
詳細については、次の追加記事を参照してください。
次の例では、4 つの CQWP を、カテゴリ ページ上の 1 つの CSWP に置き換える方法を示しています。
CSWP を使って、他のサイト コレクションのコンテンツを表示できます。 たとえば、1 つのサイト コレクションにコンテンツを作成して、そのコンテンツを別のサイト コレクションに表示する場合は、CSWP を使う必要があります。 CQWP では、1 つのサイト コレクションのコンテンツのみを表示できます。
どの Web パーツを使うかわからない場合は、おそらく CSWP が大部分のケースで最良の選択になります。 この Web パーツは CQWP よりも柔軟性があり、コンテンツを徐々に拡張することを計画している場合には、最良のパフォーマンス結果が得られます。
CQWP を使うことを決めた場合は、Web パーツが現在と将来のパフォーマンスおよびメンテナンス要件を満たしていることを確認するためのテストを実行することをお勧めします。