Filtrar manipuladores que enviam com o Windows
A Microsoft fornece vários filtros padrão com o Windows Search. Os clientes chamam esses manipuladores de filtro (que são implementações da interface IFilter ) para extrair texto e propriedades de um documento.
Este tópico é organizado da seguinte maneira:
- Notas de implementação da Pesquisa do Windows
- Filtros de Pesquisa do Windows
- Recursos adicionais
- Tópicos relacionados
Notas de implementação da Pesquisa do Windows
No Windows 7 e posterior, os filtros escritos em código gerenciado são explicitamente bloqueados. Os filtros DEVEM ser escritos em código nativo devido a possíveis problemas de controle de versão do CLR com o processo em que vários suplementos são executados.
Implementação do Windows 7 e 10
No Windows 7 e posterior, há um novo comportamento que ocorre ao registrar um manipulador de filtro, um manipulador de propriedades ou uma nova extensão. Quando um novo manipulador de propriedades e/ou manipulador de filtro é instalado, os arquivos com as extensões correspondentes são automaticamente indexados.
No Windows 7 e posterior, recomendamos que você instale um manipulador de filtro em conjunto com seus manipuladores de propriedade correspondentes e registre o manipulador de filtro antes do manipulador de propriedades. O registro do manipulador de propriedades inicia a reindexação imediata de arquivos indexados anteriormente sem antes exigir uma reinicialização e aproveita todos os manipuladores de filtro registrados anteriormente para fins de indexação de conteúdo.
Se apenas um manipulador de filtro estiver instalado sem um manipulador de propriedades correspondente, a reindexação automática ocorrerá após uma reinicialização do serviço de indexação ou uma reinicialização do sistema.
Para sinalizadores de descrição de propriedade específicos do Windows 7, consulte os seguintes tópicos de referência: GETPROPERTYSTOREFLAGS, PROPDESC_COLUMNINDEX_TYPE e PROPDESC_SEARCHINFO_FLAGS.
Implementação do Windows Vista
No Windows Vista e anteriores, a instalação de um IFilter ou manipulador de propriedades não inicia uma reindexação de itens existentes, a menos que um ISV (fornecedor independente de software) chame explicitamente uma recompilação ou reindexação de URLs correspondentes.
Há duas diferenças importantes entre aplicativos herdados, como o Serviço de Indexação e aplicativos mais recentes, como o Windows Search, que você deve estar ciente ao implementar filtros:
- Uso da interface IPersistStream .
- Uso de manipuladores de propriedade.
Primeiro, o Windows Vista e o Windows Search 3.0 e posteriores exigem que você use IPersistStream pelos seguintes motivos:
- Para garantir o desempenho e a compatibilidade futura.
- Para ajudar a aumentar a segurança. Os filtros implementados com IPersistStream são mais seguros porque o contexto no qual o filtro é executado não precisa dos direitos para abrir arquivos no disco ou na rede.
Embora o Windows Search use apenas IPersistStream, você também pode incluir implementações da Interface IPersistFile e/ou interface IPersistStorage em seus filtros para compatibilidade com versões anteriores.
A segunda grande diferença é que o Windows Vista e o Windows Search 3.0 e posteriores têm um novo Sistema de Propriedades que usa manipuladores de propriedades para enumerar propriedades de itens.
No entanto, há momentos em que você precisa implementar um filtro que manipula o conteúdo e as propriedades para:
- Suporte a implementações herdadas do MSSearch.
- Percorrer links.
- Preservar informações de idioma.
- Filtrar recursivamente itens inseridos.
Nessas situações, você precisa de uma implementação de filtro completa, incluindo o método IFilter::GetValue para acessar valores de propriedade.
Implementação herdada
Conforme observado anteriormente, o Windows Vista e o Windows Search incluem um novo sistema de propriedades que encapsula as propriedades de um item separadas do conteúdo de um item. Esse sistema de propriedades não existe em versões anteriores do Microsoft Windows Desktop Search (WDS) 2.x. Se o filtro precisar dar suporte a outros aplicativos, conforme descrito acima, talvez seja necessário manipular o conteúdo e as propriedades.
Para obter mais informações sobre como desenvolver um filtro compatível, consulte os tópicos a seguir, IFilter (para aplicativos herdados) e Desenvolvendo suplementos de filtro (para aplicativos herdados).
Filtros de Pesquisa do Windows
A Microsoft fornece vários filtros padrão com o Windows Search. O conteúdo da DLL IFilter é resumido na tabela a seguir. Clicar no nome de um manipulador de filtro leva você para a descrição dessa implementação de IFilter .
Manipulador de filtro | Arquivos filtrados | IFilter DLL |
---|---|---|
Manipulador de filtro MIME | MIME (Multipurpose Internet Mail Extension) | mimefilt.dll |
Manipulador de filtro HTML | HTML 3.0 ou anterior | nlhtml.dll |
Manipulador de Filtro de Documento | Microsoft Word, Excel, PowerPoint | offfilt.dll |
Manipulador de filtro de texto sem formatação | Arquivos de texto sem formatação – IFilter padrão | query.dll |
Manipulador de filtro binário ou nulo | Arquivos binários – IFilter nulo | query.dll |
Manipulador de filtro MIME
O manipulador de filtro MIME (em mimefilt.dll) extrai informações de texto e propriedade de arquivos com as extensões .eml, .mht e .mhtml.
Manipulador de filtro HTML
O manipulador de filtro HTML (em nlhtml.dll) extrai informações de texto e propriedade da classe "htmlfiles" para que ele possa ser indexado pelo Windows Search. Para obter uma descrição da associação entre IFilter e o tipo de arquivo, confira "Localizando a DLL de IFilter para um arquivo" em Registrando manipuladores de filtro.
Você pode usar o META
recurso de marca de documentos HTML para transmitir solicitações de tratamento especial para o IFilter HTML.
META
As marcas ocorrem perto do início de um arquivo html dentro das HEAD ... /HEAD
marcas, conforme ilustrado no exemplo a seguir.
<head>
<META NAME="DESCRIPTION"
CONTENT="This text appears on the results page as the document's summary.">
</head>
Algumas marcas HTML META
são mapeadas automaticamente para valores conhecidos do conjunto de propriedades e da ID da propriedade (PID (identificador de propriedade)) para que as consultas nessas propriedades pesquisem o conteúdo mapeado. Alguns exemplos são listados na tabela a seguir. Para obter uma lista das propriedades do sistema que você pode usar para seus formatos de arquivo, consulte Propriedades definidas pelo sistema para formatos de arquivo personalizados.
Exemplo de propriedade | Mapeado para |
---|---|
meta name="author" content="ruth" | A propriedade author no conjunto de propriedades Informações de Resumo. |
meta name="subject" content="processamento de palavras" | A propriedade subject no conjunto de propriedades Informações de Resumo. |
meta name="keywords" content="fonts, serif" | A propriedade palavra-chave no conjunto de propriedades Informações de Resumo. |
meta name="ms.category" content="fiction" | A propriedade category no conjunto de propriedades informações de resumo do documento. |
Alguns recursos do IFilter HTML estão listados na tabela a seguir.
Tarefa | Ação | Exemplo | |
---|---|---|---|
Criando resumos especiais de arquivos | Use a META NAME="DESCRIPTION"... marca para instruir o IFilter a usar a cadeia de caracteres após o CONTENT palavra-chave como o resumo do documento.
Observação: |
|
|
Impedindo que arquivos individuais sejam filtrados | Adicione uma meta name marca ao arquivo. |
|
|
Definindo o código de idioma para um arquivo (para garantir que o sistema escolha os separadores de palavras de idioma corretos e os arquivos de palavras de ruído) | Adicione a marca a seguir meta name ao arquivo, em que o campo de conteúdo especifica o código de idioma apropriado (em caracteres ou usando o valor de localidade). |
|
Manipulador de Filtro de Documento
O manipulador de filtro de documento (em offilt.dll) filtra arquivos para algumas extensões de documentos no Microsoft Office. Isso inclui arquivos com as extensões .doc, .mdb, .ppt e .xlt, por exemplo.
Manipulador de filtro de texto sem formatação
Para arquivos de texto sem formatação, o Windows Search usa o manipulador de filtro de texto, que filtra as propriedades do sistema (como nomes de arquivo) e o conteúdo de um arquivo. Quando um tipo de arquivo não tem uma associação IFilter no registro, o Windows Search indexa apenas as propriedades do Shell para o arquivo. No entanto, o usuário pode usar as Opções Avançadas no painel de controle Opções de Indexação para Propriedades de Índice ou Propriedades do Índice e Conteúdo do Arquivo.
Se o usuário escolher essa opção para um tipo de arquivo sem um IFilter associado, o manipulador de filtro de texto será usado para extrair o conteúdo do arquivo. O manipulador de filtro de texto não "entende" nenhum formato de documento; ao filtrar o conteúdo de um arquivo, ele trata o arquivo como uma sequência de caracteres. Ele faz marcar para a marca de ordem de bytes Unicode no início do arquivo.
Manipulador de filtro binário ou nulo
Quando um arquivo binário registrado é encontrado, o manipulador de filtro nulo é usado. O manipulador de filtro nulo recupera apenas as propriedades do sistema. O conteúdo de um arquivo binário não é filtrado. Exemplos de propriedades do sistema são FileName, LastWriteTime, FileSize e Attributes.
Recursos adicionais
- O exemplo de código IFilterSample , disponível no GitHub, demonstra como criar uma classe base IFilter para implementar a interface IFilter .
- Para obter uma visão geral do processo de indexação, consulte O processo de indexação.
- Para obter uma visão geral dos tipos de arquivo, consulte Tipos de arquivo.
- Para consultar atributos de associação de arquivo para um tipo de arquivo, consulte PerceivedTypes, SystemFileAssociations e Application Registration.
Tópicos relacionados
Desenvolvendo manipuladores de filtro
Sobre manipuladores de filtro na Pesquisa do Windows
Práticas recomendadas para criar manipuladores de filtro no Windows Search
Retornando propriedades de um manipulador de filtro
Implementando manipuladores de filtro na Pesquisa do Windows