Condividi tramite


Gestione delle radici di ricerca

Gestione ambito ricerca per indicizzazione (CSM) consente di aggiungere e rimuovere le radici di ricerca per gli archivi dati da e verso l'ambito di ricerca per indicizzazione di Windows Search.

Vengono inoltre presentati 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 essere indicizzate o non devono essere indicizzate; segnala semplicemente che esiste un archivio contenuto ed è associato a un gestore del protocollo 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 mostrano due forme della sintassi per una radice di ricerca.

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

Il <segmento di protocollo> deve essere seguito da due barre (2) a meno che non sia il file: protocollo, che richiede tre barre (file:///). Il <sito o il segmento SID> rappresenta un archivio contenuto o un identificatore di sicurezza utente se la radice di ricerca deve essere specifica per l'utente. Il <segmento di percorso> è un set di contenitori, ad esempio directory o cartelle, e può includere il carattere jolly '*'. Il <segmento di 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 presuppone che l'ultimo subcontainer 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 trovano nella cartella WorkteamA\ProjectFiles in un computer locale. La radice di ricerca potrebbe essere simile alla seguente:

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

Si supponga di voler includere tutti i file con estensione myext, ma non altro da tale 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 sono 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\version1\data\
  • C:\ProjectA\version2\data\

Ma questo modello non corrisponderebbe a questo URL:

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

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

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. Nell'ambito del processo di installazione per il gestore del protocollo personalizzato, 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 quelli che vogliono includere nelle ricerche o cancellare quelli che vogliono escludere.

 

Prima di iniziare

Prima di poter usare una delle interfacce csM (Crawl Scope Manager), è necessario eseguire la procedura di prerequisito seguente:

  1. Creare l'oggetto CrawlSearchManager e ottenere l'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 modifiche a Crawl Scope Manager (CSM), è necessario chiamare ISearchCrawlScopeManager::SaveAll. Questo metodo non accetta parametri e restituisce S_OK sull'esito positivo.

 

Windows 7: Nuova API gestione ambiti ricerca per indicizzazione

In Windows 7 e versioni successiveISearchCrawlScopeManager2 estende la funzionalità dell'interfaccia ISearchCrawlScopeManager . Il metodo ISearchCrawlScopeManager2::GetVersion ottiene la versione di Crawl Scope Manager (CSM), che informa i client se lo stato del CSM è cambiato. ISearchCrawlScopeManager2::GetVersion non genera una chiamata tra processi. Se la funzione ha esito positivo, il puntatore restituito rimane valido finché il client chiama UnmapViewOfFile sul puntatore e CloseHandle nell'handle restituito.

 

Aggiunta di radici all'ambito di ricerca per indicizzazione

ISearchCrawlScopeManager indica al motore di ricerca informazioni sui contenitori per indicizzazione e/o watch e gli elementi inclusi in tali contenitori per includere o escludere. Per aggiungere una nuova radice di ricerca, creare un'istanza di un oggetto ISearchRoot , impostare gli attributi radice e quindi chiamare ISearchCrawlScopeManager::AddRoot e passarlo a un puntatore all'oggetto ISearchRoot . L'URL radice di ricerca accetta la stessa forma della radice di ricerca descritta in precedenza.

La tabella seguente descrive 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 migliorare la sicurezza. Le radici per utente sono più sicure perché le query vengono eseguite in un processo per utente, garantendo 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 del protocollo o un'altra applicazione notificarà al motore di ricerca le modifiche apportate agli URL nella radice di ricerca. La notifica indica che gli URL devono essere reindexing.
put_RootURL Imposta l'URL radice della ricerca corrente. L'URL accetta la forma radice di ricerca descritta in precedenza.

 

 

Per impostazione predefinita, l'indicizzatore non esegue la ricerca per indicizzazione di un ambito quando si aggiunge una radice di ricerca. È anche 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. Enumera tutte le radici per verificare se esiste per questo SID.
  3. Aggiungere una nuova radice usando il SID, se necessario.

 

Rimozione di 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ù che l'URL indicizzato. 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 del 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 gestione ambito rimuoverà la radice e tutte le regole di ambito associate alla radice.

Per rimuovere una radice di ricerca esistente, chiamare ISearchCrawlScopeManager::RemoveRoot con la radice di ricerca da rimuovere. L'URL radice di ricerca accetta la stessa forma 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 posizione usando l'interfaccia utente. È anche possibile rimuovere tutti gli overridi impostati dall'utente di una radice di ricerca e ripristinare le regole radice e ambito di ricerca originali. Per altre informazioni, vedere Gestione delle regole di ambito.

Nota

In Windows Vista, se gli utenti vengono rimossi tramite profili utente in Pannello di controllo, CSM rimuove tutte le regole e le radici con il siD e rimuove gli 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 com standard, IEnumSearchRoots. È possibile usare questa interfaccia per enumerare le radici di ricerca per diversi scopi. Ad esempio, è possibile visualizzare l'intero ambito di ricerca per indicizzazione in un'interfaccia utente o individuare se una determinata radice o figlio di una radice è già nell'ambito della ricerca per indicizzazione.

 

Riferimento

ISearchCrawlScopeManager

ISearchRoot

IEnumSearchRoots

Informazioni concettuali

Uso di Gestione ambiti di ricerca per indicizzazione

Gestione delle regole di ambito