Uso di Gestione cataloghi

Le interfacce ISearchCatalogManager e ISearchCatalogManager2 forniscono metodi per gestire un catalogo di ricerca, ad esempio causando la reindicizzazione o l'impostazione di timeout. Sebbene Windows Search usi attualmente un solo catalogo, questa interfaccia è stata progettata per offrire un maggiore controllo per la gestione indipendente di più cataloghi. L'interfaccia gestisce il catalogo nei modi seguenti:

  • Accesso ad altre interfacce: recupero di altre interfacce correlate alla ricerca richieste da Gestione ambito ricerca per indicizzazione, notifiche di modifica dei dati e interfaccia ISearchQueryHelper .
  • Contenuto del catalogo: garantisce che i nuovi dati vengano indicizzati e che altre applicazioni e componenti funzionino correttamente forzando una reindicizzazione di tutto o parte del catalogo o reimpostando l'intero catalogo.
  • Proprietà del catalogo: impostazione delle proprietà che determinano come il catalogo gestisce i timeout durante la connessione ai gestori di protocollo e la modalità di gestione dei segni diacritici nelle ricerche.
  • Stato del catalogo: ottenere informazioni sul catalogo, inclusi lo stato, le dimensioni e lo stato dell'attività corrente.

Questo argomento è organizzato come segue:

Alcune interfacce utili nella piattaforma Windows Search richiedono un'istanza di Gestione cataloghi prima che possano essere usate. Per creare un Gestore cataloghi per un catalogo specificato, chiamare il metodo ISearchManager::GetCatalog . I metodi di Gestione cataloghi possono quindi essere usati per creare un'istanza e restituire interfacce basate sul catalogo specificato.

Metodo Descrizione
GetQueryHelper Ottiene un'istanza dell'interfaccia ISearchQueryHelper per il catalogo corrente, per consentire di compilare facilmente query.
GetCrawlScopeManager Ottiene un'istanza di ISearchCrawlScopeManager per questo catalogo di ricerca, per consentire agli sviluppatori di modificare l'ambito di ricerca per indicizzazione dell'indicizzatore di Windows Search.
GetItemsChangedSink Ottiene un'istanza dell'interfaccia ISearchItemsChangedSink , che le applicazioni client usano per notificare all'indicizzatore le modifiche quando il client desidera indicizzare le informazioni sullo stato sull'elemento per supportare le notifiche gestite dal provider. Per altre informazioni, vedere Notifica dell'indice delle modifiche .
GetPersistentItemsChangedSink Ottiene un'istanza di ISearchPersistentItemsChangedSink, che le applicazioni client usano per notificare all'indicizzatore le modifiche quando il client non desidera indicizzare le informazioni sullo stato (notifiche gestite dall'indicizzatore). Per altre informazioni, vedere Notifica dell'indice delle modifiche .

Gestione del contenuto del catalogo

Esistono due attività principali per la gestione del catalogo: la reindicizzazione di tutti o alcuni degli URL nell'ambito della ricerca per indicizzazione dell'indicizzatore e la reimpostazione dell'intero catalogo sottostante. Quando si reindicizzano gli URL, i dati precedenti rimangono nel catalogo fino a quando o a meno che non vengano sostituiti da nuovi dati. Quando si reimposta il catalogo, l'intero catalogo viene ricompilato e tutti gli URL nell'ambito della ricerca per indicizzazione vengono reindicificati. Questo processo può richiedere molto tempo e deve essere usato solo come ultima risorsa per risolvere i problemi, ad esempio un indice potenzialmente danneggiato.

Quando si installa una nuova applicazione, un gestore di protocollo o un filtro, l'applicazione di installazione deve aggiungere la relativa directory o radice all'ambito di ricerca per indicizzazione per assicurarsi che l'indicizzatore includa il percorso dei dati dell'applicazione. Se i dati non vengono visualizzati nel catalogo dopo che l'indicizzatore ha sottoposto a ricerca per indicizzazione l'ambito di ricerca per indicizzazione, è prima necessario assicurarsi che la posizione dei dati sia inclusa nell'ambito della ricerca per indicizzazione. È possibile aggiungerlo usando l'interfaccia utente per le opzioni di Ricerca di Windows o Gestione ambito ricerca per indicizzazione. Se la posizione sembra trovarsi nell'ambito della ricerca per indicizzazione, è possibile forzare manualmente una reindicizzazione di tutti gli URL nell'ambito della ricerca per indicizzazione o in un subset dell'indicizzatore, usando i metodi seguenti dell'interfaccia ISearchCatalogManager .

Re-indicizzazione del metodo Descrizione
ISearchCatalogManager::Reindex Reindicisce tutti gli URL nel catalogo. Le informazioni precedenti rimarranno finché non verranno sostituite da nuove informazioni.
ISearchCatalogManager::ReindexMatchingURLs
ISearchCatalogManager::ReindexSearchRoot
Reindicisce gli URL che corrispondono al modello o iniziano in corrispondenza di una determinata radice(ad esempio, file:///C:\Nomecartella\Nomecartella\Nomecartella\). Ciò è utile per la riorganizzazione di tutti gli elementi in una determinata directory o con una particolare estensione, come quando viene installata un'applicazione.
PrioritizeMatchingURLs Indica all'indicizzatore di assegnare priorità agli elementi di indicizzazione con URL che corrispondono a un criterio specificato per completare altre attività di indicizzazione.

Reimpostazione dell'indice. È possibile reimpostare l'intero indice con una chiamata a ISearchCatalogManager::Reset. In questo modo viene reimpostato il catalogo sottostante ricompilando i database ed eseguendo un indice completo di tutti gli URL nell'ambito della ricerca per indicizzazione. Questo processo può richiedere molto tempo e deve essere usato solo come ultima risorsa per risolvere i problemi, ad esempio un indice potenzialmente danneggiato.

Importante

A causa del rallentamento dell'indicizzazione che questi metodi possono causare, è consigliabile utilizzarli con attenzione quando si tenta di identificare i problemi di indicizzazione o catalogo. Prima di tutto, assicurarsi che le radici di ricerca e le regole di ambito vengano aggiunte in Gestione ambito ricerca per indicizzazione e quindi assicurarsi che il bit FANCI (attributo file non indicizzato) sia impostato correttamente per file e cartelle. Se si è verificato che questi sono corretti, provare ReindexSearchRoot prima e Reindex last. Se nessuna di queste operazioni funziona, provare Reimposta come ultima risorsa.

Per informazioni correlate, vedere Notifica dell'indice delle modifiche e esecuzione di query sull'indice con ISearchQueryHelper

Gestione dello stato del catalogo

Gestione cataloghi può essere usato per ottenere lo stato del catalogo per le applicazioni che desiderano personalizzare la modalità di gestione del catalogo, ad esempio un'applicazione di monitoraggio personalizzata "Stato catalogo". Tuttavia, Gestione cataloghi non è in genere necessario per la maggior parte degli scenari di sviluppo correlati alla ricerca. Gli usi comuni sono per un'applicazione di monitoraggio "Stato catalogo" o per un'applicazione di tipo Pannello di controllo.

Nella tabella seguente vengono descritti i metodi di ISearchCatalogManager usati per la gestione dello stato del catalogo.

Metodo Descrizione
URLBeingIndexed Ottiene l'URL attualmente indicizzato. Questo metodo sarebbe utile se si tentasse di identificare se l'indicizzatore era "bloccato" su un elemento.
NumberOfItems Ottiene il numero di elementi nel catalogo.
NumberOfItemsToIndex Recupera le informazioni seguenti sugli elementi da indicizzare:
  • plIncrementalCount : numero di elementi da indicizzare nell'indice incrementale successivo
  • plNotificationQueue: numero di elementi nella coda di notifica. Queste informazioni sono utili per un'applicazione di notifica che deve verificare se l'indicizzatore riceve le notifiche inviate dall'applicazione.
  • plHighPriorityQueue: numero di elementi nella coda ad alta priorità. Gli elementi in plHighPriorityQueue vengono indicizzati per primi.
GetCatalogStatus Ottiene lo stato del catalogo e restituisce un valore di enumerazione che restituisce lo stato corrente. Di seguito sono riportati i possibili stati del catalogo:
  • Inattività: non è necessaria alcuna indicizzazione.
  • Sospesa: l'indicizzazione è sospesa (ad esempio a causa di batteria insufficiente o utilizzo elevato della CPU).
  • Ripristino: l'indicizzazione viene ripristinata.
  • Ricerca per indicizzazione completa: l'indicizzatore esegue una ricerca per indicizzazione completa dell'ambito di ricerca per indicizzazione.
  • Ricerca per indicizzazione incrementale: l'indicizzatore esegue una ricerca per indicizzazione incrementale.
  • Elaborazione delle notifiche: l'indicizzatore sta elaborando le notifiche.
  • Arresto: l'indicizzatore sta arrestando.
get_Name Ottiene il nome del catalogo corrente specificato nel metodo ISearchManager::GetCatalog . Attualmente, l'unico catalogo supportato è SystemIndex.

Gestione delle proprietà del catalogo

Con Gestione cataloghi è possibile gestire tre proprietà del catalogo:

  • Sensibilità diacritica. I segni diacritici sono segni accentati aggiunti alle lettere per indicare il significato o la pronuncia di una parola. Questa proprietà determina se il catalogo è sensibile ai segni diacritici ed è importante quando l'utente o gli utenti eseguono ricerche e indicizzano il testo in più lingue. Ad esempio, con questa proprietà impostata su FALSE, il catalogo considera "resume" e "resumé" come se fosse la stessa parola.
  • Timeout di connessione. Questa proprietà rappresenta la quantità di tempo per attendere una risposta di connessione da un server o un archivio dati, come rappresentato in una struttura di TIMEOUT_INFO . È possibile usare questa proprietà per ottimizzare Windows Search.
  • Timeout dei dati Questa proprietà rappresenta la quantità di tempo per attendere una transazione di dati tra l'indicizzatore e un gestore del protocollo o un filtro, come rappresentato in una struttura di TIMEOUT_INFO . Se questa volta è trascorsa, il processo dal Daemon filtro viene terminato per evitare deadlock e altri problemi di risorsa.

Le ultime due proprietà sono destinate principalmente all'uso futuro. Ognuna di queste proprietà include get e put metodi.

Metodo Descrizione
get_DiacriticSensitivity /
put_DiacriticSensitivity
TRUE se il catalogo deve distinguere le parole con diacritici. FALSE se il catalogo deve ignorare i diacritici. La modifica di questa proprietà richiede la ricompilazione dell'indice perché le chiavi dell'indice potrebbero non essere valide.
get_ConnectTimeout /
put_ConnectTimeout
Tempo, in secondi, che l'indicizzatore deve attendere una risposta di connessione da un server o da un archivio dati. L'impostazione di questo valore troppo elevato può causare ritardi se molti siti non rispondono. L'impostazione troppo bassa può comportare la mancata ricerca per indicizzazione di alcuni siti.
get_DataTimeout /
put_DataTimeout
Tempo, in secondi, che l'indicizzatore deve attendere una transazione dati.

Esecuzione in modalità con privilegi elevati

Tutte le chiamate di metodo che aggiornano SystemIndex richiedono che l'applicazione venga eseguita con privilegi elevati. In caso contrario, l'applicazione avrà esito negativo con un errore Di accesso negato.

Gestione dell'indice

Interfacce per la gestione dell'indice

Uso di Search Manager

Uso di Gestione ambiti di ricerca per indicizzazione