次の方法で共有


Windows SharePoint Services 検索クエリ オブジェクト モデル

Windows SharePoint Services での検索 には、検索 サービスに対してクエリを実行するカスタムの検索 Web パーツおよび検索アプリケーションで使用できる新しいクエリ オブジェクト モデルが用意されています。

クエリ オブジェクト モデルは、Microsoft.SharePoint.Search.dll 内にある Microsoft.SharePoint.Search.Query 名前空間に実装されています。

カスタム検索アプリケーションでクエリ オブジェクト モデルを使用する

次のような異なる種類のアプリケーションからのクエリ オブジェクト モデルを使用するコードを記述できます。

  • SharePoint サイトでホストされるカスタム検索 Web パーツ。

  • ASPX Web アプリケーション。

クエリ オブジェクトモデルでは Windows SharePoint Services 検索 SQL 構文Windows SharePoint Services 検索のキーワード構文 の両方の検索クエリがサポートされます。

クエリ オブジェクト モデルとクエリ Web サービスのどちらかを選択する

検索 でもクエリ Web サービスを介して検索機能が提供されます。クエリ オブジェクト モデルと同様に、クエリ Web サービスでも SQL 構文とキーワード構文のクエリがサポートされ、両方とも複数の結果の種類を返すことができます。カスタム アプリケーションにどちらかを選択するときの主な考慮事項は、アプリケーションの場所です。Windows SharePoint Services 3.0 を実行しているサーバーのローカルにあるカスタム アプリケーションの場合は、クエリ オブジェクト モデルを使用できます。リモート アプリケーションの場合は、クエリ Web サービスを使用する必要があります。クエリ Web サービスの詳細については、「Windows SharePoint Services クエリ Web サービス」を参照してください。

クエリ オブジェクト モデルにアクセスする

クエリ オブジェクト モデルを使用するには、以下の DLL への参照を設定する必要があります。

  • Microsoft.SharePoint.Search.dll

  • Microsoft.SharePoint.dll

クエリ クラスについて

Microsoft.SharePoint.Search.Query 名前空間には次の 3 つのクエリ クラスがあります。

  • Query  このクラスは、コードから直接使用することを目的としたものではなく、検索 クエリ オブジェクト モデル クラスのベース実装向けに設計されています。コードでは、FullTextSqlQuery クラスと KeywordQuery クラスを使用します。

  • FullTextSqlQuery  SQL 構文の検索クエリを実行する場合は、このクラスを使用します。

  • KeywordQuery  キーワード構文の検索クエリを実行する場合は、このクラスを使用します。

カスタム検索アプリケーションのクエリ クラスを選択する

カスタム検索アプリケーションで使用するのに適切なクラスが FullTextSqlQuery か KeywordQuery かを決定するには、アプリケーション コードでサポートする検索クエリの複雑性のレベルを考慮します。

キーワード構文のみで必要なクエリを作成できる場合は、KeywordQuery クラスを使用できます。検索クエリでキーワード構文を使用する場合は、検索用語を検索コンポーネントに直接渡すことができるので、検索用語を解析してクエリを構築する必要がありません。そのため、キーワード構文を使用したクエリ作成のプロセスは簡単です。

ただし、より複雑なクエリを作成する必要がある場合に、キーワード構文を使用できないことがあります。これらのクエリでは、FullTextSqlQuery クラスを使用する必要があります。たとえば、キーワード構文は語句、単語、またはプレフィックスの完全一致のみをサポートします。また、キーワード構文を使用して特定の検索用語を含めるか除外するかを指定できますが、含める語と除外する語の複雑なグループ分けを構成することはできません。これは FullTextSqlQuery を使用して実行することができます。

以下の一覧は、FullTextSqlQuery クラスを使用した SQL 検索構文でのみサポートされる追加のクエリ要素を示します。

  • FREETEXT()

  • CONTAINS()

  • LIKE

  • ORDER BY

検索クエリを実行する

KeywordQuery クラスと FullTextSqlQuery クラスの実行フローは基本的に同じです。クラスのコンストラクタには 2 つのオーバーロードがあり、クラスをインスタンス化するときに、次のどちらかを指定する必要があります。

  • サイト コレクション (SPSite クラスのインスタンスとして)

  • サイト名

次のコード例は、KeywordQuery クラスの使用方法を示しています。

using Microsoft.SharePoint;
...
KeywordQuery qRequest = new KeywordQuery(new SPSite("http://*****");

検索結果を読み取る

コードから結果の行に簡単にアクセスできるように、ResultTable クラスでは IDataReader を実装しています。

以下に例を示します。

ResultTableCollection resultTables = queryRequest.Execute();
ResultTable relevantResults = resultTables[ResultType.RelevantResults];
DataTable resultsDataTable = new DataTable();
resultsDataTable.Load(relevantResults,LoadOption.OverwriteChanges);

結果の種類

Windows SharePoint Services での検索 から返される検索結果の種類は 1 つ (RelevantResults) のみです。

See Also

参照

Windows SharePoint Services 検索のキーワード構文

概念

Windows SharePoint Services 検索 SQL 構文

Windows SharePoint Services クエリ Web サービス