Property Filtering

Note  Indexing Service is no longer supported as of Windows XP and is unavailable for use as of Windows 8. Instead, use Windows Search for client side search and Microsoft Search Server Express for server side search.

Properties are extracted from documents by filters implemented for specific document types. Some value-type properties are obtained by other means; for example, by the property-storage interfaces. The implementer of a custom IFilter interface can interpret the contents of a document type in any number of ways, and the descriptions here represent "best practices" for an implementation.

The IFilter interface contains several methods that Indexing Service uses when filtering a document. The methods include:

  • IFilter::Init, which returns the IFILTER_FLAGS enumeration. If the IFILTER_FLAGS_OLE_PROPERTIES member of this enumeration is set to one, Indexing Service uses the IPropertySetStorage and IPropertyStorage interfaces to enumerate and access external value-type properties.
  • IFilter::GetChunk, which returns information from a document in "chunks" with chunk type (text or value), name, and locale. A chunk contains one document property.
  • IFilter::GetText, which gets a text-type property from a chunk.
  • IFilter::GetValue, which gets a value-type property from a chunk.

The following figure graphically represents an example document. The external value-type property DocTitle (obtained using methods of the IPropertySetStorage and IPropertyStorage interfaces) and the internal value-type property Book (obtained as a result of a custom IFilter implementation) describe the document as a whole. The text-type properties Contents and Chapter describe the content of the document. When processing this document, the IFilter implementation identifies and extracts these properties.