Compartilhar via


Gerenciar raízes de pesquisa

O Gerenciador de Escopo de Rastreamento (CSM) permite adicionar e remover raízes de pesquisa para seus armazenamentos de dados de e para o escopo de rastreamento da Pesquisa do Windows.

Este tópico abrange os seguintes assuntos:

 

Sobre raízes de pesquisa

Uma raiz de pesquisa define a base de um namespace do Shell em que escopos específicos podem ser incluídos ou excluídos e geralmente é o contêiner de nível mais alto em um protocolo que pode ser enumerado. Ele não especifica quais partes desse repositório devem ou não ser indexadas; ele apenas sinaliza que um repositório de conteúdo existe e está associado a um manipulador de protocolo registrado. A sintaxe para identificar uma URL raiz de pesquisa inclui o protocolo, o identificador de segurança do repositório ou do usuário, o caminho e, opcionalmente, um item específico (como um arquivo). Os exemplos a seguir mostram duas formas da sintaxe de uma raiz de pesquisa.

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

O <segmento de protocolo> deve ser seguido por duas (2) barras ('/') a menos que seja o arquivo: protocolo, que requer três barras (file:///). O <site ou segmento SID> representa um repositório de conteúdo ou um identificador de segurança do usuário se a raiz de pesquisa for destinada a ser específica para o usuário. O <segmento de caminho> é um conjunto de contêineres, como diretórios ou pastas, e pode incluir o caractere curinga '*'. O <segmento de item> é opcional e também pode incluir o caractere curinga '*'. Se você não incluir um item, certifique-se de concluir o segmento de caminho com uma barra ou o indexador assumirá que o último subcontener é um item.

Por exemplo, suponha que você tenha implementado um manipulador de protocolo (myPH) para manipular arquivos do tipo *.myext para um aplicativo personalizado. Todos esses arquivos estarão localizados na pasta WorkteamA\ProjectFiles em um computador local. A raiz de pesquisa para que pode ter esta aparência:

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

Suponha que você esteja planejando incluir todos os arquivos .myext, mas nada mais desse contêiner no índice. A raiz de pesquisa para que pode ter esta aparência:

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

Os padrões curinga definem URLs usando o caractere curinga '*' e são considerados um padrão em vez de uma URL, mas a terminologia geralmente é usada de forma intercambiável. Por exemplo, file:///C:\ProjectA\*\data\ corresponderia às seguintes URLs:

  • C:\ProjectA\version1\data\
  • C:\ProjectA\version2\data\

Mas esse padrão não corresponderia a essa URL:

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

Você deve criar novas raízes de pesquisa para contêineres que ainda não estão no escopo de rastreamento do indexador. Se o caminho C:\ParentScope já estiver incluído no escopo do rastreamento, você não precisará adicionar uma nova raiz de pesquisa para C:\ParentScope\ChildScope, a menos que você saiba que o escopo filho foi excluído anteriormente.

A interface do usuário para definir as opções de Pesquisa do Windows exibe raízes de pesquisa para os usuários para que eles possam refinar as regras de escopo para suas pesquisas. Como parte do processo de instalação do manipulador de protocolo personalizado, contêiner e/ou aplicativo, você pode definir um escopo de rastreamento padrão, com regras de inclusão e exclusão. Essas regras são apresentadas aos usuários finais como locais. Os usuários podem navegar dentro dos subdiretórios da raiz de pesquisa predefinida e selecionar os que desejam incluir nas pesquisas ou limpar os que desejam excluir.

 

Antes de começar

Antes de usar qualquer uma das interfaces do Gerenciador de Escopo de Rastreamento (CSM), execute as seguintes etapas de pré-requisito:

  1. Crie o objeto CrawlSearchManager e obtenha sua interface ISearchManager .
  2. Chame ISearchManager::GetCatalog para "SystemIndex" para obter uma instância de uma interface ISearchCatalogManager .
  3. Chame ISearchCatalogManager::GetCrawlScopeManager para obter uma instância da interface ISearchCrawlScopeManager .

Depois de fazer alterações no Gerenciador de Escopo de Rastreamento (CSM), você deve chamar ISearchCrawlScopeManager::SaveAll. Esse método não usa parâmetros e retorna S_OK com êxito.

 

Windows 7: Nova API do Gerenciador de Escopo de Rastreamento

No Windows 7 e posteriores, ISearchCrawlScopeManager2 estende a funcionalidade da interface ISearchCrawlScopeManager . O método ISearchCrawlScopeManager2::GetVersion obtém a versão do CSM (Gerenciador de Escopo de Rastreamento), que informa aos clientes se o estado do CSM foi alterado. ISearchCrawlScopeManager2::GetVersion não resulta em uma chamada entre processos. Se a função for bem-sucedida, o ponteiro retornado permanecerá válido até que o cliente chame UnmapViewOfFile no ponteiro e CloseHandle no identificador retornado.

 

Adicionando raízes ao escopo de rastreamento

O ISearchCrawlScopeManager informa ao mecanismo de pesquisa sobre contêineres para rastrear e/ou watch e itens nesses contêineres para incluir ou excluir. Para adicionar uma nova raiz de pesquisa, instancie um objeto ISearchRoot , defina os atributos raiz e, em seguida, chame ISearchCrawlScopeManager::AddRoot e passe um ponteiro para o objeto ISearchRoot . A URL raiz de pesquisa assume a mesma forma que a raiz de pesquisa descrita anteriormente.

A tabela a seguir descreve os métodos put relevantes para ISearchRoot; Os outros métodos put da interface não são usados atualmente pelo Windows Search. Recomendamos incluir SIDs (identificadores de segurança) dos usuários em todas as raízes para melhorar a segurança. As raízes por usuário são mais seguras à medida que as consultas são executadas em um processo por usuário, garantindo que um usuário não possa ver itens indexados da caixa de entrada de outro usuário, por exemplo.

Método Descrição
put_ProvidesNotifications Defina como TRUE se um manipulador de protocolo ou outro aplicativo notificar o mecanismo de pesquisa sobre as alterações nas URLs na raiz de pesquisa. A notificação indica que as URLs precisam ser reindexados.
put_RootURL Define a URL raiz da pesquisa atual. A URL usa o formulário raiz de pesquisa descrito anteriormente.

 

 

Por padrão, o indexador não rastreia um escopo quando você adiciona uma raiz de pesquisa. Você também deve adicionar uma regra de inclusão para a raiz. Se você quiser adicionar uma raiz específica do usuário para um aplicativo, esse aplicativo deverá adicionar as raízes apropriadas para novos usuários quando o aplicativo for iniciado.

Para adicionar as raízes apropriadas para novos usuários:

  1. Obtenha o SID do usuário.
  2. Enumerar todas as raízes para marcar se existe um para esse SID.
  3. Adicione uma nova raiz, usando o SID, se necessário.

 

Removendo raízes do escopo de rastreamento

Você pode usar ISearchCrawlScopeManager para remover uma raiz do escopo de rastreamento quando não quiser mais que essa URL seja indexada. A remoção de uma raiz também exclui todas as regras de escopo para essa URL. Por exemplo, suponha que você queira desinstalar um repositório de conteúdo e/ou seu manipulador de protocolo de um sistema. Você pode desinstalar o aplicativo, remover todos os dados e remover a raiz de pesquisa do escopo de rastreamento e o Gerenciador de Escopo de Rastreamento removerá a raiz e todas as regras de escopo associadas à raiz.

Para remover uma raiz de pesquisa existente, chame ISearchCrawlScopeManager::RemoveRoot com a raiz de pesquisa que você deseja remover. A URL raiz de pesquisa assume a mesma forma que a raiz de pesquisa descrita anteriormente. Esse método retornará S_FALSE se a raiz não for encontrada e um código de erro se houver um erro ao remover uma raiz encontrada.

Remover uma raiz de pesquisa também remove a URL da interface do usuário para opções da Pesquisa do Windows, portanto, os usuários podem não ser capazes de adicionar novamente esse contêiner ou local usando a interface do usuário. Também é possível remover todas as substituições de conjunto de usuários de uma raiz de pesquisa e reverter para as regras de raiz e escopo de pesquisa originais. Para obter mais informações, consulte Gerenciando regras de escopo.

Observação

No Windows Vista, se os usuários forem removidos por meio de Perfis de Usuário no Painel de Controle, o CSM removerá todas as regras e raízes com seu SID e removerá seus itens indexados do catálogo. No Windows XP, você precisa remover as raízes e as regras dos usuários manualmente.

 

 

Enumerando raízes no escopo de rastreamento

O CSM enumera raízes de pesquisa usando uma interface de enumerador de estilo COM padrão, IEnumSearchRoots. Você pode usar essa interface para enumerar raízes de pesquisa para várias finalidades. Por exemplo, talvez você queira exibir todo o escopo de rastreamento em uma interface do usuário ou descobrir se uma raiz específica ou o filho de uma raiz já está no escopo do rastreamento.

 

Referência

ISearchCrawlScopeManager

ISearchRoot

IEnumSearchRoots

Conceitual

Usando o Gerenciador de Escopo de Rastreamento

Gerenciando regras de escopo