Compartilhar via


Chamando o WDS programaticamente

Observação

O Windows Desktop Search 2.x é uma tecnologia obsoleta que estava originalmente disponível como um suplemento para Windows XP e Windows Server 2003. Em versões posteriores, use a Pesquisa do Windows .

O Microsoft Windows Desktop Search (WDS) 2.x pode ser consultado programaticamente usando os métodos ExecuteQuery e ExecuteSQLQuery na interface ISearchDesktop . O método ExecuteQuery retorna um conjunto de registros do índice com base no texto da consulta, colunas e restrições passadas como parâmetros. O método ExecuteSQLQuery também retorna um conjunto de registros de resultados, mas requer que o comando exato linguagem SQL (SQL) seja passado. ExecuteQuery deve ser usado na maioria dos cenários.

Consultas regulares

As consultas regulares são aquelas digitada na caixa de entrada do WDS pelo usuário, incluindo toda a Sintaxe de Consulta Avançada. A consulta é passada para ExecuteQuery juntamente com as colunas de esquema WDS 2.x a serem retornadas, a coluna e a ordem para classificar os resultados e quaisquer cláusulas para restringir os resultados.

O método tem o formulário:

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

Direção Variável Descrição
Em lpcwstrQuery O texto da consulta. Essa consulta é a mesma que uma consulta digitada na caixa de texto de pesquisa na interface do usuário da Pesquisa da Área de Trabalho do Windows.
Por exemplo: "from:Zara dinner plans"
Em lpcwstrColumn As colunas a serem incluídas, separadas por vírgulas.
Por exemplo: "DocTitle, Url"
Em lpcwstrSort A Coluna de Substituição a ser classificada por seguida por ASC para crescente ou DESC para decrescente.
Por exemplo: "LastAuthor DESC"
Em lpcwstrRestriction Restrições para acrescentar por meio de cláusulas WHERE na seleção Pesquisa da Área de Trabalho do Windows.
Por exemplo: "Contains(LastAuthor, 'Bill')"
Saída ppiRs O conjunto de registros resultante

Consultas SQL

O método ISearchDesktop.ExecuteSQLQuery é usado para enviar consultas diretas de banco de dados WDS. A sintaxe para as consultas é semelhante à usada para o SharePoint Server, juntamente com a capacidade de usar cláusulas SQL GROUP BY no estilo Monarch. A consulta é executada no índice exatamente como é passada sem processamento adicional da Sintaxe de Consulta Avançada como a API ExecuteQuery faz.

O método tem o formulário:

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

Direção Variável Descrição
Em lpcwstrSQL A consulta SQL a ser executada no índice WDS
Saída ppiRs O conjunto de registros resultante

Código C++ de exemplo

Observação

ESSE CÓDIGO E INFORMAÇÕES SÃO FORNECIDOS "COMO ESTÃO" SEM GARANTIA DE QUALQUER TIPO, EXPRESSO OU IMPLÍCITO, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E/OU ADEQUAÇÃO PARA UMA FINALIDADE ESPECÍFICA.

Direitos autorais (C) Microsoft. Todos os direitos reservados.

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

Referência

Sintaxe de consulta avançada

Tipos percebidos

Chamando wds de páginas da Web