Gestione delle radici di ricerca

Il Gestore dell'ambito di scansione consente di aggiungere e rimuovere le origini di ricerca per gli archivi dati nell'ambito di scansione di Windows Search.

Questo argomento include gli argomenti seguenti:

 

Informazioni sulle radici di ricerca

Una radice di ricerca definisce la base di uno spazio dei nomi shell in cui è possibile includere o escludere ambiti specifici ed è in genere il contenitore di livello più alto in un protocollo che può essere enumerato. Non specifica quali parti di questo archivio devono o non devono essere indicizzate; segnala semplicemente che esiste un archivio contenuto ed è associato a un gestore di protocolli registrato. La sintassi per identificare un URL radice di ricerca include il protocollo, l'identificatore di sicurezza dell'archivio o dell'utente, il percorso e facoltativamente un elemento specifico (ad esempio un file). Gli esempi seguenti illustrano due forme della sintassi per una radice di ricerca.

<protocol>://<store or SID>\<path>\[item]
or
<protocol>://<store or SID>/<path>/[item]

Il segmento del protocollo <> deve essere seguito da due (2) barre ('/') a meno che non si tratti del protocollo file:, che richiede tre barre (file:///). Il sito <o il segmento SID> rappresenta un archivio di contenuti oppure un identificatore di sicurezza utente se la radice di ricerca deve essere specifica per l'utente. Il segmento del percorso <> è un insieme di contenitori, come directory o cartelle, e può includere il carattere jolly '*'. Il segmento dell'elemento <> è facoltativo e può includere anche il carattere jolly '*'. Se non si include un elemento, assicurarsi di completare il segmento di percorso con una barra o l'indicizzatore presupporrà che l'ultimo sottocontenitore sia un elemento.

Si supponga, ad esempio, di aver implementato un gestore di protocolli (myPH) per gestire i file di tipo *.myext per un'applicazione personalizzata. Tutti questi file si troveranno nella cartella WorkteamA\ProjectFiles in un computer locale. La radice di ricerca potrebbe essere simile alla seguente:

  • myPH:///C:\WorkteamA\ProjectFiles\

Supponiamo che si vogliano includere tutti i file con estensione .myext, ma nient'altro da quel contenitore nell'indice. La radice di ricerca potrebbe essere simile alla seguente:

  • myPH:///C:\WorkteamA\ProjectFiles\*.myext.

I modelli con caratteri jolly definiscono gli URL usando il carattere jolly '*' e vengono considerati un modello anziché un URL, ma la terminologia viene spesso usata in modo intercambiabile. Ad esempio, file:///C:\ProjectA\*\data\ corrisponde agli URL seguenti:

  • C:\ProjectA\versione 1\data\
  • C:\ProjectA\versione 2\data\

Ma questo modello non corrisponde a questo URL:

  • C:\ProjectA\version1\temp\data\

È consigliabile creare nuove radici di ricerca per i contenitori che non sono già inclusi nell'ambito della ricerca per indicizzazione dell'indicizzatore. Se il percorso C:\ParentScope è già incluso nell'ambito della ricerca, non è necessario aggiungere una nuova radice di ricerca per C:\ParentScope\ChildScope a meno che non si sappia che l'ambito figlio è stato escluso in precedenza.

L'interfaccia utente per l'impostazione delle opzioni di Ricerca di Windows visualizza le radici di ricerca agli utenti in modo che possano perfezionare le regole di ambito per le ricerche. Come parte del processo di installazione per il gestore personalizzato del protocollo, il contenitore e/o l'applicazione, è possibile definire un ambito di ricerca per indicizzazione predefinito, con regole di inclusione ed esclusione. Queste regole vengono presentate agli utenti finali come posizioni. Gli utenti possono spostarsi all'interno delle sottodirectory della radice di ricerca predefinita e selezionare quelle che vogliono includere nelle ricerche o cancellare quelle da escludere.

 

Prima di iniziare

Prima di poter usare una qualsiasi delle interfacce csm (Crawl Scope Manager), è necessario eseguire i passaggi prerequisiti seguenti:

  1. Creare l'oggetto CrawlSearchManager e ottenere la sua interfaccia ISearchManager.
  2. Chiamare ISearchManager::GetCatalog per "SystemIndex" per ottenere un'istanza di un'interfaccia ISearchCatalogManager.
  3. Chiamare ISearchCatalogManager::GetCrawlScopeManager per ottenere un'istanza dell'interfaccia ISearchCrawlScopeManager.

Dopo aver apportato le modifiche apportate a Crawl Scope Manager (CSM), è necessario chiamare ISearchCrawlScopeManager::SaveAll. Questo metodo non accetta parametri e restituisce S_OK in caso di esito positivo.

 

Windows 7: nuova API del Gestore dell'Ambito di Scansione

In Windows 7 e versioni successive, ISearchCrawlScopeManager2 estende la funzionalità dell'interfacciaISearchCrawlScopeManager. Il metodo ISearchCrawlScopeManager2::GetVersion ottiene la versione del Crawl Scope Manager (CSM), che informa i client se lo stato del CSM sia cambiato. ISearchCrawlScopeManager2::GetVersion non genera una chiamata tra processi. Se la funzione ha esito positivo, il puntatore restituito rimane valido fino a quando il client non chiama UnmapViewOfFile sul puntatore e CloseHandle sull'handle restituito.

 

Aggiunta di elementi di base all'ambito di scansione

Il ISearchCrawlScopeManager indica al motore di ricerca quali contenitori analizzare e/o monitorare, e quali elementi nei suddetti contenitori includere o escludere. Per aggiungere una nuova radice di ricerca, creare un'istanza di un oggetto ISearchRoot , impostare gli attributi della radice e quindi chiamare ISearchCrawlScopeManager::AddRoot e passargli un puntatore all'oggetto ISearchRoot. L'URL radice di ricerca ha lo stesso formato della radice di ricerca descritta in precedenza.

Nella tabella seguente vengono descritti i metodi put pertinenti per ISearchRoot; gli altri metodi put dell'interfaccia non vengono attualmente usati da Windows Search. È consigliabile includere gli identificatori di sicurezza (SID) degli utenti in tutte le radici per una migliore sicurezza. Le radici per utente sono più sicure perché le query vengono eseguite in un processo per utente, assicurando che un utente non possa visualizzare gli elementi indicizzati dalla posta in arrivo di un altro utente, ad esempio.

Metodo Descrizione
put_ProvidesNotifications Impostare su TRUE se un gestore di protocollo o un'altra applicazione informerà il motore di ricerca sulle modifiche apportate agli URL nella radice di ricerca. La notifica indica che gli URL devono essere reindicizzati.
put_RootURL Imposta l'URL radice della ricerca corrente. L'URL assume la forma radice di ricerca descritta in precedenza.

 

 

Per impostazione predefinita, l'indicizzatore non scansiona un ambito quando si aggiunge un'origine di ricerca. È inoltre necessario aggiungere una regola di inclusione per la radice. Se si vuole aggiungere una radice specifica dell'utente per un'applicazione, tale applicazione deve aggiungere le radici appropriate per i nuovi utenti all'avvio dell'applicazione.

Per aggiungere le radici appropriate per i nuovi utenti:

  1. Ottenere il SID dell'utente.
  2. Enumerare tutte le radici per verificare se ne esiste una per questo SID.
  3. Aggiungere una nuova radice usando il SID, se necessario.

 

Rimozione delle radici dall'ambito di ricerca per indicizzazione

È possibile usare ISearchCrawlScopeManager per rimuovere una radice dall'ambito di ricerca per indicizzazione quando non si vuole più indicizzare tale URL. La rimozione di una radice elimina anche tutte le regole di ambito per tale URL. Si supponga, ad esempio, di voler disinstallare un archivio contenuto e/o il relativo gestore di protocollo da un sistema. È possibile disinstallare l'applicazione, rimuovere tutti i dati e quindi rimuovere la radice di ricerca dall'ambito di ricerca per indicizzazione, e il gestore dell'ambito rimuoverà la radice e tutte le regole di ambito associate.

Per rimuovere una radice di ricerca esistente, chiamare ISearchCrawlScopeManager::RemoveRoot con la radice di ricerca da rimuovere. L'URL radice di ricerca ha lo stesso formato della radice di ricerca descritta in precedenza. Questo metodo restituisce S_FALSE se la radice non viene trovata e un codice di errore se si è verificato un errore durante la rimozione di una radice trovata.

La rimozione di una radice di ricerca rimuove anche l'URL dall'interfaccia utente per le opzioni di Ricerca di Windows, pertanto gli utenti potrebbero non essere in grado di aggiungere nuovamente tale contenitore o percorso usando l'interfaccia utente. È anche possibile rimuovere tutte le sovrascritture impostate dall'utente di una radice di ricerca e ripristinare le regole originali della radice e dell'ambito di ricerca. Per altre informazioni, vedere Gestione delle regole di ambito.

Nota

In Windows Vista, se gli utenti vengono rimossi tramite Profili Utente nel Pannello di Controllo, CSM rimuove tutte le regole e le radici con il loro SID e rimuove i relativi elementi indicizzati dal catalogo. In Windows XP è necessario rimuovere manualmente le radici e le regole degli utenti.

 

 

Enumerazione delle radici nell'ambito della ricerca per indicizzazione

CSM enumera le radici di ricerca usando un'interfaccia enumeratore standard in stile COM, IEnumSearchRoots. È possibile usare questa interfaccia per enumerare le radici di ricerca per diversi scopi. Ad esempio, potrebbe essere necessario visualizzare l'intero ambito di ricerca per indicizzazione in un'interfaccia utente o individuare se una determinata radice o il figlio di una radice è già nell'ambito della ricerca per indicizzazione.

 

riferimento

ISearchCrawlScopeManager

ISearchRoot

IEnumSearchRoots

Concettuale

Utilizzo della gestione degli ambiti di scansione

Gestione delle Regole di Ambito