Appel de WDS par programmation
Notes
Windows Desktop Search 2.x est une technologie obsolète qui était initialement disponible en tant que complément pour Windows XP et Windows Server 2003. Sur les versions ultérieures, utilisez plutôt Recherche Windows .
Recherche de bureau Microsoft Windows (WDS) 2.x peut être interrogé par programme à l’aide des méthodes ExecuteQuery et ExecuteSQLQuery dans l’interface ISearchDesktop . La méthode ExecuteQuery retourne un jeu d’enregistrements à partir de l’index en fonction du texte de la requête, des colonnes et des restrictions passées en tant que paramètres. La méthode ExecuteSQLQuery retourne également un jeu d’enregistrements de résultats, mais nécessite le passage de la commande exacte langage SQL (SQL). ExecuteQuery doit être utilisé dans la plupart des scénarios.
Requêtes régulières
Les requêtes régulières sont celles tapées dans la zone d’entrée WDS par l’utilisateur, y compris toutes les syntaxes de requête avancée. La requête est transmise à ExecuteQuery avec les colonnes de schéma WDS 2.x à retourner, la colonne et l’ordre de tri des résultats, ainsi que les clauses permettant de restreindre les résultats.
La méthode a la forme :
HRESULT ExecuteQuery(LPCWSTR lpcwstrQuery, LPCWSTR lpcwstrColumn, LPCWSTR lpcwstrSort, LPCWSTR lpcwstrRestriction, Recordset **ppiRs);
Sens | Variable | Description |
---|---|---|
Dans | lpcwstrQuery | Texte de la requête. Cette requête est identique à une requête tapée dans la zone de texte de recherche de l’interface utilisateur Recherche windows Desktop. Par exemple : "from:Zara dinner plans" |
Dans | lpcwstrColumn | Colonnes à inclure, séparées par des virgules. Par exemple : "DocTitle, Url" |
Dans | lpcwstrSort | Colonne de remplacement à trier par suivi d’ASC pour croissant ou DESC pour la décroissante. Par exemple : "LastAuthor DESC" |
Dans | lpcwstrRestriction | Restrictions à ajouter via des clauses WHERE dans l’option Recherche sur le bureau Windows. Par exemple : "Contains(LastAuthor, 'Bill')" |
Sortie | ppiRs | Jeu d’enregistrements résultant |
Requêtes SQL
La méthode ISearchDesktop.ExecuteSQLQuery est utilisée pour envoyer des requêtes de base de données WDS directes. La syntaxe des requêtes est similaire à celle utilisée pour SharePoint Server, ainsi que la possibilité d’utiliser des clauses SQL GROUP BY de style Monarch. La requête est exécutée sur l’index exactement comme il est transmis, sans traitement supplémentaire de la syntaxe de requête avancée comme le fait l’API ExecuteQuery.
La méthode a la forme :
HRESULT ExecuteSQLQuery(LPCWSTR lpcwstrSQL, Recordset **ppiRs);
Sens | Variable | Description |
---|---|---|
Dans | lpcwstrSQL | Requête SQL à exécuter sur l’index WDS |
Sortie | ppiRs | Jeu d’enregistrements résultant |
Exemple de code C++
Notes
CE CODE ET CES INFORMATIONS SONT FOURNIS « TELS QUELS » SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS S’Y LIMITER, LES GARANTIES IMPLICITES DE QUALITÉ MARCHANDE ET/OU D’ADÉQUATION À UN USAGE PARTICULIER.
Copyright (C) Microsoft. Tous droits réservés.
#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();
}
Rubriques connexes
-
Informations de référence