Partager via


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

Informations de référence

Syntaxe de requête avancée

Types perçus

Appel de WDS à partir de pages web