Compartilhar via


Usando o Gerenciador de Catálogos

As interfaces ISearchCatalogManager e ISearchCatalogManager2 fornecem métodos para gerenciar um catálogo de pesquisa, como causar nova indexação ou definir tempos limite. Embora o Windows Search atualmente use apenas um catálogo, essa interface foi projetada para oferecer maior controle para gerenciar vários catálogos de forma independente. A interface gerencia o catálogo das seguintes maneiras:

  • Acesso a outras interfaces – recuperando outras interfaces relacionadas à pesquisa exigidas pelo Gerenciador de Escopo de Rastreamento, notificações de alteração de dados e a interface ISearchQueryHelper .
  • Conteúdo do catálogo – garantindo que novos dados sejam indexados e que outros aplicativos e componentes funcionem corretamente forçando uma nova indexação de todo ou parte do catálogo ou redefinindo todo o catálogo.
  • Propriedades do catálogo – definindo propriedades que determinam como o catálogo gerencia tempos limite ao se conectar a manipuladores de protocolo e como as marcas diacríticas são tratadas em pesquisas.
  • Catálogo status – obtendo informações sobre o catálogo, incluindo status, tamanho e estado da atividade atual.

Este tópico é organizado da seguinte maneira:

Algumas interfaces úteis na plataforma Windows Search exigem uma instância do Gerenciador de Catálogos antes que possam ser usadas. Para criar um Gerenciador de Catálogos para um catálogo especificado, chame o método ISearchManager::GetCatalog . Os métodos do Gerenciador de Catálogos podem ser usados para criar uma instância e retornar interfaces baseadas no catálogo especificado.

Método Descrição
GetQueryHelper Obtém uma instância da interface ISearchQueryHelper para o catálogo atual, para permitir que você crie consultas facilmente.
GetCrawlScopeManager Obtém uma instância de ISearchCrawlScopeManager para este catálogo de pesquisa, para permitir que os desenvolvedores modifiquem o escopo de rastreamento do Indexador de Pesquisa do Windows.
GetItemsChangedSink Obtém uma instância da interface ISearchItemsChangedSink, que os aplicativos cliente usam para notificar o indexador de alterações quando o cliente deseja indexar status informações sobre o item para dar suporte a notificações gerenciadas pelo provedor. Consulte Notificando o índice de alterações para obter mais informações.
GetPersistentItemsChangedSink Obtém uma instância de ISearchPersistentItemsChangedSink, que os aplicativos cliente usam para notificar o indexador de alterações quando o cliente não deseja indexar informações de status (notificações gerenciadas pelo indexador). Consulte Notificando o índice de alterações para obter mais informações.

Gerenciando o conteúdo do catálogo

Há duas tarefas principais envolvidas no gerenciamento do catálogo: reindexar todas ou algumas das URLs no escopo de rastreamento do indexador e redefinir todo o catálogo subjacente. Quando você reindexa URLs, os dados antigos permanecem no catálogo até ou a menos que sejam substituídos por novos dados. Quando você redefine o catálogo, todo o catálogo é recriado e todas as URLs no escopo de rastreamento são indexadas novamente. Esse processo pode levar muito tempo e deve ser usado apenas como último recurso para resolver problemas como um índice possivelmente corrompido.

Quando você instala um novo aplicativo, manipulador de protocolo ou filtro, o aplicativo de instalação deve adicionar seu diretório ou raiz ao escopo de rastreamento para garantir que o indexador inclua o local dos dados desse aplicativo. Se os dados não aparecerem no catálogo depois que o indexador tiver rastreado seu escopo de rastreamento, primeiro você deverá garantir que o local dos dados seja incluído no escopo de rastreamento. Você pode adicioná-lo usando a interface do usuário para opções do Windows Search ou o Gerenciador de Escopo de Rastreamento. Se o local parecer estar no escopo de rastreamento, você poderá forçar manualmente uma nova indexação de todas as URLs no escopo de rastreamento do indexador ou em um subconjunto, usando os métodos a seguir da interface ISearchCatalogManager .

Método de reindexação Descrição
ISearchCatalogManager::Reindex Reindexa todas as URLs no catálogo. As informações antigas permanecerão até serem substituídas por novas informações.
ISearchCatalogManager::ReindexMatchingURLs
ISearchCatalogManager::ReindexSearchRoot
Indexa novamente URLs que correspondem ao padrão ou começam em uma raiz específica (por exemplo, file:///C:\Foldername\Subfoldername\). Isso é útil para recrawling tudo em um diretório específico ou com uma extensão específica, como quando um aplicativo é instalado.
PrioritizeMatchingURLs Instrui o indexador a priorizar itens de indexação com URLs que correspondam a um padrão especificado em vez de concluir outras tarefas de indexação.

Redefinindo o índice. Você pode redefinir todo o índice com uma chamada para ISearchCatalogManager::Reset. Isso redefine o catálogo subjacente recriando os bancos de dados e executando um índice completo de todas as URLs no escopo de rastreamento. Esse processo pode levar muito tempo e deve ser usado apenas como último recurso para resolver problemas como um índice possivelmente corrompido.

Importante

Devido à lentidão na indexação que esses métodos podem causar, eles devem ser usados com cuidado quando você está tentando identificar problemas de indexação ou catálogo. Primeiro, verifique se suas raízes de pesquisa e regras de escopo foram adicionadas no Gerenciador de Escopo de Rastreamento e, em seguida, verifique se o bit FANCI (Atributo de Arquivo Não Conteúdo Indexado) está definido corretamente para arquivos e pastas. Se você confirmou que eles estão corretos, tente ReindexSearchRoot primeiro e Reindex last. Se nenhum desses trabalhos funcionar, tente Redefinir como último recurso.

Para obter informações relacionadas, consulte Notificando o índice de alterações e Consultando o índice com ISearchQueryHelper

Gerenciando o status do catálogo

O Gerenciador de Catálogos pode ser usado para obter o status do catálogo de aplicativos que desejam personalizar como o catálogo é gerenciado (por exemplo, um aplicativo de monitoramento personalizado de "Status do Catálogo"). Mas o Gerenciador de Catálogos normalmente não é necessário para a maioria dos cenários de desenvolvimento relacionados à pesquisa. Os usos comuns seriam para um aplicativo de monitoramento "Status do Catálogo" ou um aplicativo no estilo Painel de Controle.

A tabela a seguir descreve os métodos de ISearchCatalogManager usados para gerenciar status de catálogo.

Método Descrição
URLBeingIndexed Obtém a URL que está sendo indexada no momento. Esse método seria útil se você estivesse tentando identificar se o indexador estava "preso" em um item.
NumberOfItems Obtém o número de itens no catálogo.
NumberOfItemsToIndex Recupera as seguintes informações sobre itens a serem indexados:
  • plIncrementalCount - o número de itens a serem indexados no próximo índice incremental
  • plNotificationQueue - o número de itens na fila de notificação. Essas informações seriam úteis para um aplicativo de notificação que precisava marcar se o indexador está recebendo as notificações que o aplicativo está enviando.
  • plHighPriorityQueue - o número de itens na fila de alta prioridade. Os itens no plHighPriorityQueue são indexados primeiro.
GetCatalogStatus Obtém o status do catálogo e retorna um valor de enumeração que fornece o status atual. Veja a seguir os possíveis estados de catálogo:
  • Ocioso: nenhuma indexação é necessária.
  • Pausado: a indexação está em pausa (devido à bateria baixa ou ao alto uso da CPU, por exemplo).
  • Recuperação: a indexação está se recuperando.
  • Rastreamento completo: o indexador está executando um rastreamento completo do escopo de rastreamento.
  • Rastreamento incremental: o indexador está executando um rastreamento incremental.
  • Processando notificações: o indexador está processando notificações.
  • Desligamento: o indexador está sendo desligado.
get_Name Obtém o nome do catálogo atual especificado no método ISearchManager::GetCatalog . Atualmente, o único catálogo com suporte é SystemIndex.

Gerenciando propriedades de catálogo

Há três propriedades de catálogo que você pode gerenciar com o Gerenciador de Catálogos:

  • Sensibilidade diacrítica. Diacríticos são marcas de ênfase adicionadas a letras para significar o significado ou pronúncia de uma palavra. Essa propriedade determina se o catálogo é sensível a diacríticos e é importante quando você ou seus usuários pesquisam e indexam texto em vários idiomas. Por exemplo, com essa propriedade definida como FALSE, o catálogo trataria "resume" e "resumé" como se fossem a mesma palavra.
  • Tempos limite de conexão. Essa propriedade representa a quantidade de tempo para aguardar uma resposta de conexão de um servidor ou armazenamento de dados, conforme representado em uma estrutura de TIMEOUT_INFO . Você pode usar essa propriedade para ajustar o Windows Search.
  • Tempos limite de dados Essa propriedade representa a quantidade de tempo para aguardar uma transação de dados entre o indexador e um manipulador ou filtro de protocolo, conforme representado em uma estrutura de TIMEOUT_INFO . Se esse tempo tiver decorrido, o processo do Daemon de Filtro será encerrado para evitar deadlock e outros problemas de recursos.

As duas últimas propriedades destinam-se principalmente ao uso futuro. Cada uma dessas propriedades tem get métodos e put .

Método Descrição
get_DiacriticSensitivity /
put_DiacriticSensitivity
TRUE se o catálogo deve diferenciar palavras com diacríticos. FALSE se o catálogo deve ignorar diacríticos. Alterar essa propriedade requer a recompilação do índice porque as chaves do índice podem se tornar inválidas.
get_ConnectTimeout /
put_ConnectTimeout
O tempo, em segundos, em que o indexador deve aguardar uma resposta de conexão de um servidor ou armazenamento de dados. Definir isso muito alto pode causar atrasos se muitos sites não responderem. Defini-lo muito baixo pode fazer com que alguns sites não sejam rastreados.
get_DataTimeout /
put_DataTimeout
O tempo, em segundos, em que o indexador deve aguardar uma transação de dados.

Em execução no modo elevado

Todas as chamadas de método que atualizam o SystemIndex exigem que seu aplicativo seja executado com privilégios elevados. Caso contrário, seu aplicativo falhará com um erro acesso negado.

Gerenciar o índice

Interfaces para gerenciar o índice

Usando o Gerenciador de Pesquisa

Usando o Gerenciador de Escopo de Rastreamento