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