Share via


Gestori di filtri forniti con Windows

Microsoft fornisce diversi filtri standard con Windows Search. I client chiamano questi gestori di filtro (implementazioni dell'interfaccia IFilter ) per estrarre testo e proprietà da un documento.

Questo argomento è organizzato come segue:

Note sull'implementazione di Windows Search

In Windows 7 e versioni successive i filtri scritti nel codice gestito vengono bloccati in modo esplicito. I filtri DEVONO essere scritti nel codice nativo a causa di potenziali problemi di controllo delle versioni CLR con il processo in cui vengono eseguiti più componenti aggiuntivi.

Implementazione di Windows 7 e 10

In Windows 7 e versioni successive è presente un nuovo comportamento che si verifica durante la registrazione di un gestore di filtri, un gestore di proprietà o una nuova estensione. Quando viene installato un nuovo gestore di proprietà e/o gestore di filtri, i file con le estensioni corrispondenti vengono automaticamente indicizzati.

In Windows 7 e versioni successive è consigliabile installare un gestore di filtri in combinazione con i gestori di proprietà corrispondenti e registrare il gestore filtri prima del gestore di proprietà. La registrazione del gestore di proprietà avvia la reindicizzazione immediata dei file indicizzati in precedenza senza prima richiedere un riavvio e sfrutta eventuali gestori di filtro registrati in precedenza allo scopo dell'indicizzazione del contenuto.

Se viene installato solo un gestore di filtri senza un gestore di proprietà corrispondente, l'indicizzazione automatica viene eseguita dopo un riavvio del servizio di indicizzazione o dopo un riavvio del sistema.

Per i flag di descrizione delle proprietà specifici di Windows 7, vedere gli argomenti di riferimento seguenti: GETPROPERTYSTOREFLAGS, PROPDESC_COLUMNINDEX_TYPE e PROPDESC_SEARCHINFO_FLAGS.

Implementazione di Windows Vista

In Windows Vista e versioni precedenti, l'installazione di un gestore di proprietà o IFilter non avvia una nuova indicizzazione degli elementi esistenti, a meno che un fornitore di software indipendente (ISV) non chiami in modo esplicito una ricompilazione o una nuova indicizzazione degli URL corrispondenti.

Esistono due differenze principali tra le applicazioni legacy, ad esempio il servizio di indicizzazione e le applicazioni più recenti, ad esempio Windows Search, che è necessario tenere presente quando si implementano i filtri:

  • Uso dell'interfaccia IPersistStream .
  • Uso dei gestori di proprietà.

Prima di tutto, Windows Vista e Windows Search 3.0 e versioni successive richiedono l'uso di IPersistStream per i motivi seguenti:

  • Per garantire prestazioni e compatibilità futura.
  • Per aumentare la sicurezza. I filtri implementati con IPersistStream sono più sicuri perché il contesto in cui viene eseguito il filtro non richiede i diritti per aprire i file sul disco o in rete.

Mentre Windows Search usa solo IPersistStream, è anche possibile includere l'interfaccia IPersistFile e/o le implementazioni dell'interfaccia IPersistStorage nei filtri per la compatibilità con le versioni precedenti.

La seconda differenza principale è che Windows Vista e Windows Search 3.0 e versioni successive hanno un nuovo sistema di proprietà che usa gestori di proprietà per enumerare le proprietà degli elementi.

Tuttavia, in alcuni casi è necessario implementare un filtro che gestisce sia il contenuto che le proprietà per:

  • Supportare implementazioni MSSearch legacy.
  • Attraversa i collegamenti.
  • Mantenere le informazioni sulla lingua.
  • Filtrare in modo ricorsivo gli elementi incorporati.

In queste situazioni è necessaria un'implementazione completa del filtro, incluso il metodo IFilter::GetValue per accedere ai valori delle proprietà.

Implementazione legacy

Come indicato in precedenza, Windows Vista e Windows Search includono un nuovo sistema di proprietà che incapsula le proprietà di un elemento separate dal contenuto di un elemento. Questo sistema di proprietà non esiste nelle versioni precedenti di Microsoft Windows Desktop Search (WDS) 2.x. Se il filtro deve supportare altre applicazioni come descritto in precedenza, potrebbe essere necessario gestire sia il contenuto che le proprietà.

Per altre informazioni sullo sviluppo di un filtro compatibile, vedere gli argomenti seguenti, IFilter (per le applicazioni legacy) e Sviluppo di componenti aggiuntivi filtro (per le applicazioni legacy) .

Filtri di Ricerca di Windows

Microsoft fornisce diversi filtri standard con Windows Search. Il contenuto della DLL IFilter è riepilogato nella tabella seguente. Facendo clic sul nome di un gestore di filtro viene visualizzata la descrizione per l'implementazione di IFilter .

Gestore filtri File filtrati IFilter DLL
Gestore filtri MIME Estensione MIME (Multipurpose Internet Mail Extension) mimefilt.dll
Gestore filtri HTML HTML 3.0 o versioni precedenti nlhtml.dll
Gestore filtri documento Microsoft Word, Excel, PowerPoint offfilt.dll
Gestore filtro testo normale File di testo normale - IFilter predefinito query.dll
Gestore filtro binario o Null File binari - IFilter Null query.dll

Gestore filtri MIME

Il gestore di filtri MIME (in mimefilt.dll) estrae le informazioni di testo e proprietà dai file con estensioni eml, mht e mhtml.

Gestore filtri HTML

Il gestore di filtri HTML (in nlhtml.dll) estrae le informazioni di testo e proprietà dalla classe "htmlfiles" in modo che possa essere indicizzato da Windows Search. Per una descrizione dell'associazione tra IFilter e il tipo di file, vedere "Ricerca della DLL IFilter per un file" in Registrazione dei gestori di filtri.

È possibile usare la META funzionalità tag dei documenti HTML per trasmettere richieste di gestione speciali al filtro IFilter HTML. META i tag si verificano vicino all'inizio di un file HTML all'interno dei HEAD ... /HEAD tag, come illustrato nell'esempio seguente.

   <head>
     <META NAME="DESCRIPTION"
           CONTENT="This text appears on the results page as the document's summary.">
   </head>

Alcuni tag HTML META vengono mappati automaticamente ai valori noti del set di proprietà e dell'ID proprietà (PID) in modo che le query su queste proprietà eseseguono ricerche nel contenuto mappato. Alcuni esempi sono elencati nella tabella seguente. Per un elenco delle proprietà di sistema che è possibile usare per i formati di file, vedere Proprietà definite dal sistema per formati di file personalizzati.

Esempio di proprietà Mapping a
meta name="author" content="ruth" Proprietà author nel set di proprietà Summary Information.
meta name="subject" content="word processing" Proprietà subject nel set di proprietà Summary Information.
meta name="keywords" content="fonts, serif" Proprietà della parola chiave nel set di proprietà Summary Information.
meta name="ms.category" content="fiction" Proprietà category nel set di proprietà Summary Information del documento.

Alcune funzionalità del filtro IFilter HTML sono elencate nella tabella seguente.

Attività Operazione Esempio
Creazione di astrazioni speciali dai file Usare il META NAME="DESCRIPTION"... tag per indicare a IFilter di usare la stringa che segue la CONTENT parola chiave come astratto del documento.

Nota:
Il processo di filtro può generare astrazioni per ogni file filtrato, che per impostazione predefinita è un set di caratteri all'inizio del file.


<head>
  <META NAME="DESCRIPTION" CONTENT="This text will appear on the results page as the document's summary.">
</head>
 
Impedire che singoli file vengano filtrati Aggiungere un meta name tag al file.
  <meta name="robots" content="noindex">
Impostazione del codice linguistico per un file (per assicurarsi che il sistema scelga i word breaker di lingua e i file di parole non significative corretti) Aggiungere il tag seguente meta name al file, in cui il campo contenuto specifica il codice di lingua appropriato (in caratteri o usando il valore delle impostazioni locali).
<meta name="ms.locale" content="EN">
<meta name="ms.locale" content=1033>

Gestore filtri documento

Il gestore di filtri documenti (in offilt.dll) filtra i file per alcune estensioni di documenti in Microsoft Office. Questi includono file con estensioni .doc, mdb, .ppt e xlt, ad esempio.

Gestore filtro testo normale

Per i file di testo normale, Windows Search usa il gestore di filtri di testo, che filtra sia le proprietà di sistema (ad esempio i nomi di file) che il contenuto di un file. Quando un tipo di file non ha un'associazione IFilter nel Registro di sistema, Windows Search indicizza solo le proprietà della shell per il file. Tuttavia, l'utente può utilizzare le opzioni avanzate nel pannello di controllo Opzioni di indicizzazione per indicizzare proprietà o proprietà indice e contenuto del file.

screenshot che mostra la finestra di dialogo opzioni avanzate

Se l'utente sceglie questa opzione per un tipo di file senza un IFilter associato, il gestore di filtri di testo viene usato per estrarre il contenuto del file. Il gestore di filtri di testo non riconosce alcun formato di documento; quando si filtra il contenuto di un file, il file viene considerato come una sequenza di caratteri. Verifica la presenza del contrassegno di byte-order Unicode all'inizio del file.

Gestore filtro binario o Null

Quando viene rilevato un file binario registrato, viene usato il gestore di filtri Null. Il gestore di filtri Null recupera solo le proprietà di sistema. Il contenuto di un file binario non viene filtrato. Esempi di proprietà di sistema sono FileName, LastWriteTime, FileSize e Attributes.

Risorse aggiuntive

Sviluppo di gestori di filtri

Informazioni sui gestori di filtri in Windows Search

Procedure consigliate per la creazione di gestori di filtri in Windows Search

Restituzione di proprietà da un gestore di filtri

Implementazione di gestori di filtri in Windows Search

Registrazione dei gestori di filtri

Test dei gestori di filtri