Compartir a través de


Llamada a WDS mediante programación

Nota

Windows Desktop Search 2.x es una tecnología obsoleta que originalmente estaba disponible como complemento para Windows XP y Windows Server 2003. En versiones posteriores, use Windows Search en su lugar.

Microsoft Windows Desktop Search (WDS) 2.x se puede consultar mediante programación mediante los métodos ExecuteQuery y ExecuteSQLQuery en la interfaz ISearchDesktop . El método ExecuteQuery devuelve un conjunto de registros del índice basado en el texto de la consulta, las columnas y las restricciones que se pasan como parámetros. El método ExecuteSQLQuery también devuelve un conjunto de registros de resultados, pero requiere que se pase el comando exacto Lenguaje de consulta estructurado (SQL). ExecuteQuery debe usarse en la mayoría de los escenarios.

Consultas normales

Las consultas normales son aquellas que el usuario escribe en el cuadro de entrada de WDS, incluida toda la sintaxis de consulta avanzada. La consulta se pasa a ExecuteQuery junto con las columnas de esquema WDS 2.x para devolver, la columna y el orden de ordenar los resultados, y cualquier cláusula para restringir los resultados.

El método tiene el formato :

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

Dirección Variable Descripción
En lpcwstrQuery El texto de la consulta. Esta consulta es la misma que una consulta que se escribe en el cuadro de texto de búsqueda de la interfaz de usuario de Búsqueda de escritorio de Windows.
Por ejemplo: "from:Zara dinner plans"
En lpcwstrColumn Columnas que se van a incluir, separadas por comas.
Por ejemplo: "DocTitle, Url"
En lpcwstrSort Invalidación de columna para ordenar seguida de ASC para ascendente o DESC para descendente.
Por ejemplo: "LastAuthor DESC"
En lpcwstrRestriction Restricciones para anexar a través de cláusulas WHERE en la selección de Búsqueda de escritorio de Windows.
Por ejemplo: "Contains(LastAuthor, 'Bill')"
Fuera ppiRs Conjunto de registros resultante

Consultas SQL

El método ISearchDesktop.ExecuteSQLQuery se usa para enviar consultas directas de base de datos WDS. La sintaxis de las consultas es similar a la que se usa para SharePoint Server, junto con la capacidad de usar cláusulas SQL GROUP BY de estilo Monarch. La consulta se ejecuta en el índice exactamente como se pasa sin ningún procesamiento adicional de la sintaxis de consulta avanzada, como hace executeQuery API.

El método tiene el formato :

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

Dirección Variable Descripción
En lpcwstrSQL Consulta SQL que se va a ejecutar en el índice WDS
Fuera ppiRs Conjunto de registros resultante

Código de C++ de ejemplo

Nota

ESTE CÓDIGO E INFORMACIÓN SE PROPORCIONA "TAL CUAL" SIN GARANTÍA DE NINGÚN TIPO, EXPRESADO O IMPLÍCITO, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD Y/O IDONEIDAD PARA UN PROPÓSITO DETERMINADO.

Copyright (C) Microsoft. Todos los derechos 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();
}

Referencia

Sintaxis de consulta avanzada

Tipos percibidos

Llamada a WDS desde páginas web