Query Web サービスでの絞り込み条件の使用

Query Web サービスで FAST Search Server 2010 for SharePoint のクエリ絞り込みを使用する方法について説明します。

最終更新日: 2011年10月5日

適用対象: SharePoint Server 2010

この記事の内容
クエリ XML での絞り込み条件の指定
クエリ結果の絞り込みデータ
絞り込みクエリの作成
クエリ絞り込みの Visual Studio の例

この記事では、次の順序で、Query Web サービスで FAST Search Server 2010 for SharePoint のクエリ絞り込みを使用する方法について説明します。

適用先: Microsoft FAST Search Server 2010 for SharePoint

クエリ XML での絞り込み条件の指定

Query Web サービスでは、Microsoft.Search.Query スキーマの Refiner 要素 を使用して、クエリ結果を返す絞り込み条件を指定します。

この要素には、絞り込み条件の名前が含まれますが、高度な構文を使用して、指定された絞り込み条件に対して既定以外の構成値を適用することもできます。Refiner 要素の高度な構文の詳細については、「Query Web サービスおよびクエリ オブジェクト モデルにおける絞り込み条件の仕様」を参照してください。

次の例は、3 つの絞り込み条件を要求するクエリ XML を示しています。

<IncludeRefinementResults>
  <Refiners>
    <Refiner>author</Refiner>
    <Refiner>write(discretize=manual/2010-01-01/2010-08-22/2010-09-15/2010-09-21/2010-09-22)</Refiner>
    <Refiner>companies</Refiner>
  </Refiners>
</IncludeRefinementResults> 

write 絞り込み条件は、アイテムの最終変更日を示します。また高度な構文を使用して、固定サイズの日付/時刻 bin を返します。

クエリ結果の絞り込みデータ

クエリ内の管理プロパティに対してクエリ絞り込みを有効にしている場合は、クエリ結果に絞り込み bin データが含まれます。1 つの絞り込み bin は、管理プロパティに固有の値または値範囲を示します。検索 UI では、通常、絞り込み bin を [クエリの絞り込み] の選択肢として表示します。

QueryEx Query Web サービス メソッドを使用すると、返されるデータセットに RefinementResults という名前のテーブルが含まれます。テーブルには、絞り込み bin ごとに 1 行と、表 1 に指定された列が含まれます。

表 1. 絞り込み bin で返されるデータ

パラメーター

説明

RefinerName

クエリ絞り込み条件の名前。これは、管理プロパティ名の小文字表現です。

RefinementName

この絞り込み bin で表される、絞り込みの表示可能な文字列表現。この文字列は、通常、クエリ結果ページで、ユーザーに絞り込みオプションを示すときに使用されます。

RefinementValue

実装に固有の書式設定がされた絞り込みの文字列表現。このデータはデバッグのために返されるもので、通常、クライアントは必要としません。

RefinementToken

絞り込みクエリを実行するときに、この絞り込み bin を表す Base64 エンコードの文字列。これは、絞り込みクエリを実行するときに FAST Search Server 2010 for SharePoint ファームに渡される値です。

RefinementCount

この絞り込み bin の結果カウント。これは、この絞り込み bin に含まれる特定の管理プロパティのための値を持つクエリ結果での、アイテムの数を表します。

絞り込みクエリの作成

絞り込みクエリは、特定の日付範囲にクエリを制限するときなどのために、ユーザーが選択した絞り込みオプションに基づいて作成されるクエリです。

クエリ結果は、絞り込みオプションを、通常、文字列値または値の範囲の形で示します。各文字列値または数値の範囲は、絞り込み bin と呼ばれます。各絞り込み bin について、対応する RefinementToken 値があります。この値を絞り込みクエリで使用します。

次の例は、絞り込みを表すクエリ XML を示します。

<RefinementFilters>
  <RefinementFilter>AQVmaXhlZA90ZWxzdHJha2V5d29yZHMBAV4BJA==</RefinementFilter>
</RefinementFilters>

RefinementFilter 要素は、1 つの絞り込み bin を表します。作成されるクエリは、関連付けられた管理プロパティに絞り込み bin 内の値が含まれるアイテムに限定されます。

RefinementFilters 要素には、複数の絞り込み bin を追加できます。この場合、作成されるクエリは、関連付けられた管理プロパティにすべての絞り込み bin 内の値が含まれるアイテムに限定されます。これにより、複数値プロパティに絞り込みを適用できます。たとえば、(それぞれ 1 つの絞り込み bin で表される) 2 人の作成者が含まれるアイテムにクエリを絞り込みます。しかし、作成者の 1 人のみが含まれるアイテムは除外します。

次の例は、2 つの絞り込み bin が含まれる絞り込みを表すクエリ XML を示しています。

<RefinementFilters>
  <RefinementFilter>AQVmaXhlZA90ZWxzdHJha2V5d29yZHMBAV4BJA==</RefinementFilter>
  <RefinementFilter>AQZidW5kbGUPdGVsc3RyYWtleXdvcmRzAQFeASQ=</RefinementFilter>
</RefinementFilters>

クエリ絞り込みの Visual Studio の例

次の手順は、「[チュートリアル] クライアント アプリケーションから FAST Search Server にクエリを実行する」の手順を拡張するものです。この記事の手順に従って操作してから、次のようにコードを拡張してください。

コード拡張は次のとおりです。

  • クエリ結果で 3 つの絞り込み条件 (author、write、および company) を要求します。これは、「クエリ XML での絞り込み条件の指定」の例と同じです。

  • 2 番目の DataGridView コントロールでクエリ絞り込みデータを印刷します。

Visual Studio クライアント アプリケーションのコードを拡張するには

  1. 結果セットに 3 つのクエリ絞り込み条件を追加するように queryXML2 文字列の定義を置き換えます。

       // queryXML2 is the part of the XML after the query string.
       string queryXML2 = @"
             </QueryText>
          </Context>
          <ResultProvider>FASTSearch</ResultProvider>
          <Range>
             <Count>10</Count>
          </Range>
          <IncludeRefinementResults>
            <Refiners>
              <Refiner>author</Refiner>
              <Refiner>write(discretize=manual/2010-01-01/2010-08-22/2010-09-15/2010-09-21/2010-09-22)</Refiner>
              <Refiner>companies</Refiner>
            </Refiners>
          </IncludeRefinementResults>
       </Query>
    </QueryPacket>";
    
  2. queryButton_Click イベントに以下のコード行を追加します。

       // Set the second DataGridView data source to the RefinementResults table in the DataSet object:
       secondGrid.DataSource = queryResults.Tables["RefinementResults"];
    

関連項目

参照

Microsoft.Search.Query スキーマの Refiner 要素

概念

インデックス スキーマ (FAST Search Server for SharePoint)

[チュートリアル] クライアント アプリケーションから FAST Search Server にクエリを実行する