从筛选器处理程序返回属性
使用已注册的属性处理程序或使用为特定文件类型注册的筛选器从项中提取属性。 (IFilter 接口) 实现的筛选器处理程序可以通过多种方式解释文件类型的内容。
本主题的组织方式如下:
属性筛选
下表列出了属性筛选的最佳做法。
方法 | 说明 |
---|---|
IFilter::Init | 返回 IFILTER_FLAGS 枚举。 如果此枚举 的 IFILTER_FLAGS_OLE_PROPERTIES 成员设置为 1,则 Windows 搜索将使用 IPropertySetStorage 和 IPropertyStorage 接口接口来枚举和访问外部值类型属性。 |
IFilter::GetChunk | 以区块类型 (文本或值) 、名称和区域设置从“区块”中的文档返回信息。 区块包含一个文档属性。 |
IFilter::GetText | 从区块中获取文本类型属性。 |
IFilter::GetValue | 从区块中获取值类型属性。 |
下图显示了一个示例文档。 外部值类型属性 DocTitle
(使用 IPropertySetStorage 和 IPropertyStorage 接口的方法获取) ,内部值类型属性 Book
(通过自定义 IFilter 实现获取,) 将文档描述为一个整体。 文本类型属性 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 搜索开发属性处理程序。