Panoramica di Windows Search

Windows Search è una piattaforma di ricerca desktop con funzionalità di ricerca immediata per i tipi di file e i tipi di dati più comuni e gli sviluppatori di terze parti possono estendere queste funzionalità a nuovi tipi di file e tipi di dati.

Questo argomento è organizzato come segue:

Introduzione

Windows Search è un componente standard di Windows 7 e Windows Vista ed è abilitato per impostazione predefinita. Windows Search sostituisce Windows Desktop Search (WDS), disponibile come componente aggiuntivo per Windows XP e Windows Server 2003.

Windows Search è costituito da tre componenti:

Servizio Windows Search

WSS organizza le funzionalità estratte di una raccolta di documenti. Il protocollo di Windows Search consente a un client di comunicare con un server che ospita un WSS, sia per eseguire query che per consentire a un amministratore di gestire il server di indicizzazione. Durante l'elaborazione dei file, WSS analizza un set di documenti, estrae informazioni utili e quindi organizza le informazioni estratte in modo che le proprietà di tali documenti possano essere restituite in modo efficiente in risposta alle query.

Una raccolta di documenti su cui è possibile eseguire query è costituito da un catalogo, che è l'unità di livello più alto dell'organizzazione in Windows Search. Un catalogo rappresenta un set di documenti indicizzati su cui è possibile eseguire query. Un catalogo è costituito da una tabella delle proprietà con il testo o il valore e la posizione corrispondente (impostazioni locali) archiviate nelle colonne della tabella. Ogni riga della tabella corrisponde a un documento separato nell'ambito del catalogo e ogni colonna della tabella corrisponde a una proprietà. Un catalogo può contenere un indice invertito (per la corrispondenza rapida delle parole) e una cache delle proprietà (per il recupero rapido dei valori delle proprietà).

Il processo dell'indicizzatore viene implementato come servizio windows in esecuzione nell'account LocalSystem ed è sempre in esecuzione per tutti gli utenti (anche se non è connesso alcun utente), che consente a Windows Search di eseguire le operazioni seguenti:

  • Mantenere un indice condiviso tra tutti gli utenti.
  • Mantenere restrizioni di sicurezza per l'accesso al contenuto.
  • Elaborare query remote dai computer client in rete.

Il servizio di ricerca è progettato per proteggere l'esperienza utente e le prestazioni del sistema durante l'indicizzazione. Le condizioni seguenti causano la limitazione o la sospensione dell'indicizzazione da parte del servizio:

  • Utilizzo elevato della CPU da parte di processi non correlati alla ricerca.
  • Velocità di I/O di sistema elevata, tra cui operazioni di lettura e scrittura dei file, I/O di file di pagine e cache di file e I/O mappati.
  • Disponibilità insufficiente della memoria.
  • Durata bassa della batteria.
  • Spazio su disco insufficiente nell'unità in cui è archiviato l'indice.

Piattaforma di sviluppo

Il modo preferito per accedere alle API di ricerca e creare applicazioni di Ricerca di Windows consiste nell'usare un'origine dati shell. Un'origine dati shell è un componente usato per estendere lo spazio dei nomi shell ed esporre elementi in un archivio dati. Un archivio dati è un repository di dati. Un archivio dati può essere esposto al modello di programmazione shell come contenitore che usa un'origine dati Shell. Gli elementi in un archivio dati possono essere indicizzati dal sistema di Windows Search usando un gestore di protocolli.

Ad esempio, ISearchFolderItemFactory è un componente in grado di creare istanze dell'origine dati della cartella di ricerca, ovvero una sorta di origine dati "virtuale" fornita dalla shell che può eseguire query su altre origini dati nello spazio dei nomi shell ed enumerare i risultati. A tale scopo, è possibile usare l'indicizzatore o enumerare e controllare manualmente gli elementi negli ambiti specificati. Questa interfaccia consente di configurare i parametri della ricerca usando metodi che creano e modificano le cartelle di ricerca. Se i metodi di questa interfaccia non vengono chiamati, vengono invece usati valori predefiniti.

L'accesso alla funzionalità di Windows Search indirettamente tramite il modello di dati shell è preferibile perché fornisce l'accesso alla funzionalità shell completa a livello del modello di dati shell. Ad esempio, puoi impostare l'ambito di una ricerca su una libreria (una funzionalità disponibile in Windows 7 e versioni successive) per usare le cartelle della libreria come ambito della query. Windows Search aggrega quindi i risultati della ricerca da tali posizioni se si trovano in indici diversi (se le cartelle si trovano in computer diversi). Il livello dati shell crea anche una visualizzazione più completa delle proprietà degli elementi, sintetizzando alcuni valori delle proprietà. Fornisce inoltre l'accesso alle funzionalità di ricerca per gli archivi dati non indicizzati da Windows Search. Ad esempio, è possibile eseguire ricerche in dispositivi di archiviazione USB (Universal Serial Bus), un dispositivo portatile che usa il protocollo MTP o un server FTP (File Transfer Protocol) tramite le origini dati shell che consentono l'accesso a tali sistemi di archiviazione. In questo modo si garantisce un'esperienza utente migliore.

Windows Search dispone di una cache di valori di proprietà usati nell'implementazione del servizio Windows Search (WSS). Questi valori delle proprietà possono essere sottoposti a query a livello di codice tramite il provider OLE DB di Windows Search o tramite ISearchFolderItemFactory, che rappresenta gli elementi nei risultati della ricerca e nelle viste basate su query. Windows Search raccoglie e archivia quindi le proprietà generate dai gestori di filtri o dai gestori di proprietà quando viene indicizzato un elemento, ad esempio un documento di Word. Questo archivio viene rimosso e ricompilato quando l'indice viene ricompilato.

Gli sviluppatori di terze parti possono creare applicazioni che utilizzano i dati nell'indice tramite query a livello di codice e possono estendere i dati nell'indice per i tipi di file e di elementi personalizzati da indicizzare tramite Windows Search. Se si desidera visualizzare i risultati delle query in Esplora risorse, è necessario implementare un'origine dati shell prima di poter creare un gestore di protocollo per estendere l'indice. Tuttavia, se tutte le query sono a livello di codice (ad esempio tramite OLE DB) e interpretate dal codice dell'applicazione anziché dalla shell, uno spazio dei nomi shell è comunque preferibile ma non obbligatorio.

Per Windows è necessario un gestore di protocollo per ottenere informazioni sul contenuto dei file, ad esempio elementi nei database o tipi di file personalizzati. Mentre Windows Search può indicizzare il nome e le proprietà del file, Windows non dispone di informazioni sul contenuto del file. Di conseguenza, tali elementi non possono essere indicizzati o esposti nella shell di Windows. Implementando un gestore di protocollo personalizzato, è possibile esporre questi elementi. Per un elenco dei gestori identificati dallo scenario di sviluppo che si sta tentando di ottenere, vedere "Panoramica dei gestori" in Windows Search come piattaforma di sviluppo.

Nota

Un'origine dati shell è talvolta nota come estensione dello spazio dei nomi shell. Un gestore è talvolta noto come estensione shell o gestore di estensioni shell.

 

Interfaccia utente

In Windows Vista e versioni successive Windows Search è integrato in tutte le finestre di Esplora risorse per l'accesso immediato alla ricerca. In questo modo gli utenti possono cercare rapidamente file ed elementi in base al nome file, alle proprietà e al contenuto full-text. I risultati possono anche essere filtrati ulteriormente per perfezionare la ricerca. Ecco alcune altre funzionalità di Windows Search:

  • Una casella di ricerca immediata in ogni finestra consente il filtro istantaneo di tutti gli elementi attualmente visualizzati. Le caselle di ricerca istantanee vengono visualizzate nella menu Start per cercare programmi o file e nell'angolo superiore destro di tutte le finestre di Esplora risorse di Windows per filtrare i risultati visualizzati. La ricerca immediata è integrata anche in altre funzionalità di Windows, ad esempio Lettore multimediale Windows, per trovare i file correlati.
  • I documenti possono essere contrassegnati con parole chiave per raggrupparli in base a criteri personalizzati definiti dall'utente. I tag sono elementi di metadati assegnati dall'utente o dalle applicazioni per semplificare la ricerca di file basati su parole chiave che potrebbero non trovarsi nel nome o nel contenuto dell'elemento. Ad esempio, un set di immagini potrebbe essere contrassegnato come "Arizona Vacation 2009" per recuperare rapidamente in un secondo momento cercando una delle parole incluse.
  • Le intestazioni di colonna avanzate nelle visualizzazioni di Esplora risorse consentono l'ordinamento e il raggruppamento dei documenti in modi diversi. Ad esempio, i file possono essere ordinati in base al nome, alla data di modifica, al tipo, alle dimensioni e ai tag. I documenti possono anche essere raggruppati in base a una di queste proprietà e ogni gruppo può essere filtrato (nascosto o visualizzato) in base alle esigenze.
  • I documenti possono essere impilati in base al nome, alla data di modifica, al tipo, alle dimensioni e ai tag. Gli stack includono tutti i documenti con la proprietà specificata e che si trovano all'interno di qualsiasi sottocartella della cartella selezionata.
  • Le ricerche possono essere salvate (da recuperare in un secondo momento) facendo clic sul pulsante Salva ricerca nel riquadro di ricerca in Esplora risorse. I risultati verranno ripopolati dinamicamente in base ai criteri originali all'apertura della ricerca salvata. Per istruzioni, vedere Salvare i risultati della ricerca.
  • I gestori di anteprima e i gestori di anteprima consentono agli utenti di visualizzare in anteprima i documenti in Esplora risorse senza dover aprire l'applicazione che li ha creati.

Prerequisiti tecnici

Prima di iniziare a leggere la documentazione di Windows Search SDK, è necessario avere una conoscenza fondamentale dei concetti seguenti:

  • Come implementare un'origine dati shell.
  • Come implementare un gestore.
  • Come lavorare nel codice nativo.

Un'origine dati shell è un componente usato per estendere lo spazio dei nomi shell ed esporre elementi in un archivio dati. In passato, l'origine dati shell è stata definita estensione dello spazio dei nomi shell. Un gestore è un oggetto COM (Component Object Model) che fornisce funzionalità per un elemento shell. Per un elenco dei gestori identificati dallo scenario di sviluppo che si sta tentando di ottenere, vedere "Panoramica dei gestori" in Windows Search come piattaforma di sviluppo.

Per altre informazioni sull'assembly di interoperabilità di Windows Search SDK per l'uso di oggetti COM esposti da Windows Search e altri programmi che usano codice gestito, vedere Using Managed Code with Shell Data and Windows Search .For more information about the Windows Search interoperability assembly for working with COM objects that are exposed by Windows Search and other programs that use managed code, see Using Managed Code with Shell Data and Windows Search. Si noti tuttavia che i filtri, i gestori di proprietà e i gestori di protocollo devono essere scritti nel codice nativo. Ciò è dovuto a potenziali problemi di controllo delle versioni di Common Language Runtime (CLR) con il processo in cui vengono eseguiti più componenti aggiuntivi. Gli sviluppatori che non hanno esperienza con C++ possono iniziare a usare Visual C++ Developer Center e Introduzione allo sviluppo di Windows.

Download e contenuto dell'SDK

Oltre a soddisfare i prerequisiti tecnici elencati, devi anche scaricare Windows SDK per ottenere le librerie di Windows Search. Gli esempi di codice di Windows Search contengono esempi di codice utili e un assembly di interoperabilità per lo sviluppo con codice gestito.

Documentazione di Windows Search SDK

Il contenuto della documentazione di Windows Search SDK è il seguente:

Windows Search sostituisce Windows Desktop Search (WDS), disponibile come componente aggiuntivo per Windows XP e Windows Server 2003. WdS ha sostituito il servizio di indicizzazione legacy dalle versioni precedenti di Windows con miglioramenti alle prestazioni, all'usabilità e all'estendibilità. La nuova piattaforma di sviluppo supporta i requisiti che producono un sistema più sicuro e stabile. Anche se la nuova piattaforma di query non è compatibile con Microsoft Windows Desktop Search (WDS) 2.x, i filtri e i gestori di protocollo scritti per le versioni precedenti di WDS possono essere aggiornati per funzionare con Windows Search. Windows Search supporta anche un nuovo sistema di proprietà. Per informazioni su filtri, gestori di proprietà e gestori di protocollo, vedere Estensione dell'indice.

Windows Search è integrato in Windows Vista e versioni successive ed è disponibile come aggiornamento ridistribuibile a WDS 2.x, per supportare i sistemi operativi seguenti:

  • Versioni a 32 bit di Windows XP con Service Pack 2 (SP2).
  • Tutte le versioni basate su x64 di Windows XP.
  • Windows Server 2003 con Service Pack 1 (SP1) e versioni successive.
  • Tutte le versioni basate su x64 di Windows Server 2003.

I sistemi che eseguono questi sistemi operativi devono avere Windows Search installato per eseguire applicazioni scritte per Windows Search.

Risorse aggiuntive

  • Per informazioni sulla creazione di un'origine dati shell, vedere Implementazione delle interfacce oggetto cartella di base.
  • Per altre informazioni su ISearchFolderItemFactory e sull'origine dati della cartella DB, vedere la descrizione della costante STR_PARedizione Standard_WITH_PROPERTIES in Bind Context String Keys.For more information about ISearchFolderItemFactory and the DB folder data source, see the description of the STR_PARedizione Standard_WITH_PROPERTIES constant in Bind Context String Keys. Vedere anche Association Arrays and IPropertySystem::GetPropertyDescriptionListFromString.See also Association Arrays and IPropertySystem::GetPropertyDescriptionListFromString.
  • Per informazioni su OLE DB, vedere Panoramica della programmazione OLE DB. Per informazioni sul provider di dati .NET Framework per OLE DB, vedere la documentazione relativa allo spazio dei nomi System.Data.OleDb.
  • Per una panoramica dei gestori dei tipi di file (noti anche come gestori di estensione della shell e gestori di ricerca), vedi Windows Search come piattaforma di sviluppo.
  • Per le bacheche di messaggi supportate dalla community sulle tecnologie di ricerca, vedere forum MSDN: Sviluppo di Ricerca desktop di Windows.
  • Per esempi di codice correlati, vedere Esempi di codice di Windows Search.

Windows Search come piattaforma di sviluppo

Lingue supportate da Windows Search

Uso di codice gestito con i dati della shell e Windows Search