エンタープライズ検索のクエリ オブジェクト モデルの概要

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

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

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

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

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

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

クエリ オブジェクトモデルでは、エンタープライズ検索の SQL 構文のリファレンスエンタープライズ検索のキーワード構文の参照の両方の検索クエリがサポートされます。

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

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

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

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

  • Microsoft.Office.Server.dll

  • Microsoft.Office.Server.Search.dll

  • Microsoft.SharePoint.dll

クエリ クラスについて

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

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

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

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

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

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

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

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

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

  • FREETEXT()

  • CONTAINS()

  • LIKE

  • ORDER BY

検索クエリを実行する

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

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

  • 検索サービスの共有サービス プロバイダ (SSP) のコンテキスト (ServerContext クラスのインスタンスとして)

  • 検索サービスの共有サービス プロバイダ (SSP) のアプリケーション名 (SSP の GUID を含む文字列)

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

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

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

using Microsoft.Office.Server;
...
FullTextSqlQuery qRequest = new FullTextSqlQuery(ServerContext.Current);

検索結果を読み取る

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

以下に例を示します。

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

結果の種類

エンタープライズ検索 から返される検索結果は、次の表に示す 4 つの検索結果の種類に分類されます。

名前

説明

RelevantResults

クエリに一致するコンテンツ インデックスからの検索結果を含む主要な結果セット。

HighConfidenceResults

一致精度の高い結果を含む結果セット。

SpecialTermResults

クエリに一致するおすすめコンテンツを含む結果セット。

DefinitionResults

クエリに一致するキーワードの定義を含む結果セット。

これらの検索結果の種類は、Microsoft.Office.Server.Search.Query 名前空間の ResultType 列挙で定義されています。

See Also

参照

エンタープライズ検索のキーワード構文の参照

概念

エンタープライズ検索の SQL 構文のリファレンス

カスタム エンタープライズ検索 Web パーツを構築する

エンタープライズ検索のクエリ Web サービスの概要