Chiamata a livello di codice di WDS
Nota
Windows Desktop Search 2.x è una tecnologia obsoleta originariamente disponibile come componente aggiuntivo per Windows XP e Windows Server 2003. Nelle versioni successive usare invece Windows Search .
Microsoft Windows Desktop Search (WDS) 2.x può essere sottoposto a query a livello di codice usando i metodi ExecuteQuery e ExecuteSQLQuery nell'interfaccia ISearchDesktop. Il metodo ExecuteQuery restituisce un set di record dall'indice in base al testo della query, alle colonne e alle restrizioni passate come parametri. Il metodo ExecuteSQLQuery restituisce anche un set di record di risultati, ma richiede che il comando Structured Query Language (SQL) esatto venga passato. ExecuteQuery deve essere usato nella maggior parte degli scenari.
Query regolari
Le query regolari sono quelle digitate nella casella di input WDS dall'utente, inclusa tutta la sintassi di query avanzata. La query viene passata a ExecuteQuery insieme alle colonne dello schema WDS 2.x da restituire, alla colonna e all'ordinamento dei risultati e alle clausole da limitare i risultati.
Il metodo ha il formato:
HRESULT ExecuteQuery(LPCWSTR lpcwstrQuery, LPCWSTR lpcwstrColumn, LPCWSTR lpcwstrSort, LPCWSTR lpcwstrRestriction, Recordset **ppiRs);
Direction | Variabile | Descrizione |
---|---|---|
In | lpcwstrQuery | Testo della query. Questa query è uguale a una query digitata nella casella di testo di ricerca nell'interfaccia utente di Ricerca desktop di Windows. ad esempio "from:Zara dinner plans" |
In | lpcwstrColumn | Colonne da includere, separate da virgole. ad esempio "DocTitle, Url" |
In | lpcwstrSort | Colonna override da ordinare seguita da ASC per l'crescente o DESC per la decrescente. ad esempio "LastAuthor DESC" |
In | lpcwstrRestriction | Restrizioni per aggiungere le clausole WHERE nella selezione di Ricerca desktop di Windows. ad esempio "Contains(LastAuthor, 'Bill')" |
In uscita | ppiR | Set di record risultanti |
Query SQL
Il metodo ISearchDesktop.ExecuteSQLQuery viene usato per inviare query di database WDS dirette. La sintassi per le query è simile a quella usata per SharePoint Server, oltre alla possibilità di usare clausole SQL GROUP BY in stile Monarch. La query viene eseguita sull'indice esattamente come viene passata senza un'elaborazione aggiuntiva della sintassi di query avanzata perché l'API ExecuteQuery esegue.
Il metodo ha il formato:
HRESULT ExecuteSQLQuery(LPCWSTR lpcwstrSQL, Recordset **ppiRs);
Direction | Variabile | Descrizione |
---|---|---|
In | lpcwstrSQL | Query SQL da eseguire sull'indice WDS |
In uscita | ppiR | Set di record risultanti |
Codice C++ di esempio
Nota
QUESTO CODICE E INFORMAZIONI VENGONO FORNITE "COME È" SENZA GARANZIA DI ALCUN TIPO, ESPRESSO O IMPLICITO, INCLUSO MA NON LIMITATO ALLE GARANZIE IMPLICITE DI COMMERCIABILITÀ E/O IDONEITÀ PER UNO SCOPO SPECIFICO.
Copyright (C) Microsoft. Tutti i diritti sono riservati.
#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();
}