次の方法で共有


プログラムによる WDS の呼び出し

Note

Windows Desktop Search 2.x は、Windows XP および Windows Server 2003 のアドインとして最初に使用できた古いテクノロジです。 以降のリリースでは、代わりに Windows Search を使用してください。

Microsoft Windows Desktop Search (WDS) 2.x は、ISearchDesktop インターフェイスの ExecuteQuery メソッドと ExecuteSQLQuery メソッドを使用して、プログラムでクエリを実行できます。 ExecuteQuery メソッドは、パラメーターとして渡されるクエリ テキスト、列、および制限に基づいて、インデックスからレコード セットを返します。 ExecuteSQLQuery メソッドは、結果のレコード セットも返しますが、正確な構造化照会言語 (SQL) コマンドを渡す必要があります。 ExecuteQuery は、ほとんどのシナリオで使用する必要があります。

通常のクエリ

通常のクエリは、すべての 高度なクエリ構文を含むユーザーが WDS 入力ボックスに入力したものです。 クエリは、返される WDS 2.x スキーマ列、結果を並べ替える列と順序、結果を制限する句と共に ExecuteQuery に渡されます。

メソッドの形式は次のとおりです。

HRESULT ExecuteQuery(LPCWSTR lpcwstrQuery, LPCWSTR lpcwstrColumn, LPCWSTR lpcwstrSort, LPCWSTR lpcwstrRestriction, Recordset **ppiRs);

Direction 変数 説明
/ lpcwstrQuery クエリ テキスト。 このクエリは、Windows デスクトップ検索ユーザー インターフェイスの検索テキスト ボックスに入力されたクエリと同じです。
例: "from:Zara dinner plans"
/ lpcwstrColumn コンマで区切って含める列。
例: "DocTitle, Url"
/ lpcwstrSort 並べ替える列のオーバーライド、昇順の場合は ASC、降順の場合は DESC。
例: "LastAuthor DESC"
/ lpcwstrRestriction Windows デスクトップ検索で WHERE 句を使用して追加する制限を選択します。
例: "Contains(LastAuthor, 'Bill')"
アウト ppiRs 結果のレコード セット

SQL クエリ

ISearchDesktop.ExecuteSQLQuery メソッドは、直接 WDS データベース クエリを送信するために使用されます。 クエリの構文は、SharePoint Server で使用される構文と、モナークスタイルの SQL GROUP BY 句を使用する機能に似ています。 クエリは、ExecuteQuery API と同様に高度なクエリ構文の追加処理なしで、渡されたとおりにインデックスに対して実行されます。

メソッドの形式は次のとおりです。

HRESULT ExecuteSQLQuery(LPCWSTR lpcwstrSQL, Recordset **ppiRs);

Direction 変数 説明
/ lpcwstrSQL WDS インデックスに対して実行する SQL クエリ
アウト ppiRs 結果のレコード セット

サンプル C++ コード

Note

このコードと情報は、明示または黙示を問わず、商品性および/または特定の目的に対する適合性に関する黙示の保証を含むがこれらに限定されない、いかなる種類の保証もなく「現状有姿」で提供されます。

Copyright (C) Microsoft。 All rights reserved.

#include <stdio.h>
#include <wchar.h>
#include <windows.h>
#include <msnldl.h>
#include <adoint.h>
#include <adoguids.h>
 
HRESULT TestExecuteQuery(ISearchDesktop *psd)
{
ADORecordset *prs = NULL;
 
    HRESULT hr;
 
    hr = psd->ExecuteQuery( L"ToName:Moishe", 
                            L"DocTitle,DocFormat", 
                            L"PrimaryDate DESC", 
                            L"Contains('text')", 
                            &prs);
    if (SUCCEEDED(hr))
        prs->Release();
    return hr;
}
 
HRESULT TestExecuteSQLQuery(ISearchDesktop *psd)
{
    ADORecordset *prs = NULL;
    HRESULT hr;

    hr = psd->ExecuteSQLQuery(L"select DocTitle from MyIndex..Scope() where contains('text')", &prs);

    if (SUCCEEDED(hr))
      prs->Release();
    return hr;
}
 
extern "C" int __cdecl wmain( int argc, WCHAR * argv[] )
{
    SCODE sc = CoInitialize(0);
    ISearchDesktop *psd = NULL;
    HRESULT         hr;
     
    if (SUCCEEDED(hr = CoCreateInstance(__uuidof(SearchDesktop), NULL, CLSCTX_INPROC_SERVER, 
                                        __uuidof(ISearchDesktop), (void**)&psd)))
          {
             TestExecuteSQLQuery(psd);
             TestExecuteQuery(psd);
             psd->Release();
          }
          CoUninitialize();
}

リファレンス

詳細クエリ構文

認識される型

Web ページからの WDS の呼び出し