从筛选器处理程序返回属性
属性使用已注册的属性处理程序从项中提取,或使用为特定文件类型注册的筛选器。 筛选器处理程序 (IFilter 接口的实现,) 可以通过多种方式解释文件类型的内容。
本主题按如下所示进行组织:
属性筛选
下表列出了属性筛选的最佳做法。
方法 | 说明 |
---|---|
IFilter::Init | 返回 IFILTER_FLAGS 枚举。 如果此枚举的IFILTER_FLAGS_OLE_PROPERTIES成员设置为一个,则Windows搜索使用 IPropertySetStorage 和 IPropertyStorage 接口接口来枚举和访问外部值类型属性。 |
IFilter::GetChunk | 返回“区块”中的文档的信息,其中包含区块类型 (文本或值) 、名称和区域设置。 区块包含一个文档属性。 |
IFilter::GetText | 从区块中获取文本类型属性。 |
IFilter::GetValue | 从区块中获取值类型属性。 |
下图显示了一个示例文档。 使用 IPropertySetStorage 和 IPropertyStorage 接口的方法获取的外部值类型属性DocTitle
() 以及由于自定义 IFilter 实现而获取的内部值类型属性Book
() 将文档描述为整体。 文本类型属性 Contents
并 Chapter
描述文档的内容。 处理本文档时,筛选器处理程序 (IFilter 接口的实现) 标识和提取这些属性。
属性大小限制
属性大小存在两个潜在限制:
- Windows搜索接受每个文件的最大数据大小。
- 属性说明文件中定义的每个属性的最大大小。
目前,Windows搜索在计算从项接受的数据量时不使用定义的属性大小。 相反,搜索使用的 Windows限制是文件大小的乘积, (MaxGrowFactor
文件大小 N * MaxGrowFactor) 从注册表中读取。 默认值 MaxGrowFactor
为 4。
HKEY_LOCAL_MACHINE
SOFTWARE
Microsoft
Gathering Manager
MaxGrowFactor
因此,如果文件类型的大小往往较小,但属性较大,Windows搜索可能不接受要发出的所有属性数据。 但是,你可以增加 MaxGrowFactor
以满足你的需求。
其他资源
- GitHub上提供的 IFilterSample 代码示例演示如何创建用于实现 IFilter 接口的 IFilter 基类。
- 有关索引过程的概述,请参阅 索引进程。
- 有关文件类型的概述,请参阅 文件类型。
- 若要查询文件类型的文件关联属性,请参阅 PerceivedTypes、SystemFileAssociations 和应用程序注册。
- 有关属性和属性处理程序的概述以及可用于文件格式的系统属性列表,请参阅开发用于Windows搜索的属性处理程序。