Freigeben über


Programmgesteuertes Aufrufen von WDS

Hinweis

Windows Desktop Search 2.x ist eine veraltete Technologie, die ursprünglich als Add-In für Windows XP und Windows Server 2003 verfügbar war. Verwenden Sie in späteren Versionen stattdessen Windows Search .

Microsoft Windows Desktop Search (WDS) 2.x kann programmgesteuert mit den Methoden ExecuteQuery und ExecuteSQLQuery in der ISearchDesktop-Schnittstelle abgefragt werden. Die ExecuteQuery-Methode gibt einen Datensatzsatz aus dem Index basierend auf dem Abfragetext, den Spalten und den Einschränkungen zurück, die als Parameter übergeben werden. Die ExecuteSQLQuery-Methode gibt auch einen Datensatzsatz von Ergebnissen zurück, erfordert jedoch, dass genau der SQL-Befehl (strukturierte Abfragesprache) übergeben wird. ExecuteQuery sollte in den meisten Szenarien verwendet werden.

Reguläre Abfragen

Reguläre Abfragen sind solche, die vom Benutzer in das WDS-Eingabefeld eingegeben werden, einschließlich der gesamten erweiterten Abfragesyntax. Die Abfrage wird zusammen mit den zurückzugebenden WDS 2.x-Schemaspalten, der Spalte und reihenfolge zum Sortieren der Ergebnisse sowie allen Klauseln zum Einschränken der Ergebnisse an ExecuteQuery übergeben.

Die -Methode hat folgende Form:

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

Direction Variable BESCHREIBUNG
In lpcwstrQuery Der Abfragetext. Diese Abfrage ist identisch mit einer Abfrage, die in das Suchtextfeld auf der Benutzeroberfläche der Windows-Desktopsuche eingegeben wird.
Beispiel: "from:Zara dinner plans"
In lpcwstrColumn Die einzuschließenden Spalten, getrennt durch Kommas.
Beispiel: "DocTitle, Url"
In lpcwstrSort Die zu sortierende Außerkraftsetzungsspalte gefolgt von ASC für aufsteigend oder DESC für absteigend.
Beispiel: "LastAuthor DESC"
In lpcwstrRestriction Einschränkungen zum Anfügen durch WHERE-Klauseln in der Windows Desktop Search-Auswahl.
Beispiel: "Contains(LastAuthor, 'Bill')"
aus ppiRs Der resultierende Datensatzsatz

SQL-Abfragen

Die ISearchDesktop.ExecuteSQLQuery-Methode wird verwendet, um direkte WDS-Datenbankabfragen zu senden. Die Syntax für die Abfragen ähnelt der syntax, die für SharePoint Server verwendet wird, zusammen mit der Möglichkeit, SQL GROUP BY-Klauseln im Monarch-Stil zu verwenden. Die Abfrage wird für den Index genau so ausgeführt, wie sie übergeben wird, ohne dass die erweiterte Abfragesyntax wie die ExecuteQuery-API zusätzlich verarbeitet wird.

Die -Methode hat folgende Form:

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

Direction Variable BESCHREIBUNG
In lpcwstrSQL Die SQL-Abfrage, die für den WDS-Index ausgeführt werden soll
aus ppiRs Der resultierende Datensatzsatz

C++-Beispielcode

Hinweis

DIESER CODE UND DIE INFORMATIONEN WERDEN OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG BEREITGESTELLT, EINSCHLIEßLICH, ABER NICHT BESCHRÄNKT AUF DIE STILLSCHWEIGENDEN GEWÄHRLEISTUNGEN DER HANDELSÜBLICHKEIT UND/ODER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.

Copyright (C) Microsoft. Alle Rechte vorbehalten.

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

Referenz

Erweiterte Abfragesyntax

Wahrgenommene Typen

Aufrufen von WDS über Webseiten