Поделиться через


Программный вызов служб WDS

Примечание

Windows Desktop Search 2.x — это устаревшая технология, которая изначально была доступна в качестве надстройки для Windows XP и Windows Server 2003. В более поздних выпусках используйте Windows Search .

Microsoft Windows Desktop Search (WDS) 2.x можно запрашивать программным способом с помощью методов ExecuteQuery и ExecuteSQLQuery в интерфейсе ISearchDesktop . Метод ExecuteQuery возвращает набор записей из индекса на основе текста запроса, столбцов и ограничений, переданных в качестве параметров. Метод ExecuteSQLQuery также возвращает набор результатов, но требует точной команды язык SQL (SQL). ExecuteQuery следует использовать в большинстве сценариев.

Обычные запросы

Обычные запросы — это запросы, введенные пользователем в поле ввода WDS, включая все расширенные синтаксиса запросов. Запрос передается в ExecuteQuery вместе с возвращаемыми столбцами схемы WDS 2.x, столбцом и порядком сортировки результатов, а также любыми предложениями, ограничивающими результаты.

Метод имеет следующий вид:

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

Направление Переменная Описание
В lpcwstrQuery Текст запроса. Этот запрос совпадает с запросом, введенным в текстовое поле поиска в пользовательском интерфейсе Windows Desktop Search.
Пример: "from:Zara dinner plans"
В lpcwstrColumn Столбцы для включения, разделенные запятыми.
Пример: "DocTitle, Url"
В lpcwstrSort Столбец переопределения для сортировки, за которым следует ASC для возрастания или DESC для убывания.
Пример: "LastAuthor DESC"
В lpcwstrRestriction Ограничения для добавления с помощью предложений WHERE в поиске на рабочем столе Windows.
Пример: "Contains(LastAuthor, 'Bill')"
Исходящий ppiRs Результирующий набор записей

Запросы SQL

Метод ISearchDesktop.ExecuteSQLQuery используется для отправки прямых запросов к базе данных WDS. Синтаксис запросов аналогичен синтаксису, используемому для SharePoint Server, наряду с возможностью использования предложений SQL GROUP BY в стиле Monarch. Запрос выполняется по индексу точно так же, как он передается, без дополнительной обработки расширенного синтаксиса запросов, как это делает API ExecuteQuery.

Метод имеет следующий вид:

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

Направление Переменная Описание
В lpcwstrSQL SQL-запрос для выполнения к индексу WDS
Исходящий ppiRs Результирующий набор записей

Пример кода C++

Примечание

ЭТОТ КОД И ИНФОРМАЦИЯ ПРЕДОСТАВЛЯЮТСЯ "КАК ЕСТЬ" БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ ТОВАРНОЙ ПРИГОДНОСТИ И/ИЛИ ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ.

(C) Корпорация Майкрософт. Все права защищены.

#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();
}

Reference

Синтаксис расширенных запросов

Воспринимаемые типы

Вызов служб WDS из веб-страниц