Winapi Windows搜索中属性的最大向量大小

Winapi Windows搜索中属性的最大向量大小,winapi,com,windows-search,ifilter,wds,Winapi,Com,Windows Search,Ifilter,Wds,我在Windows Search中索引PDF文件时遇到了一个限制,特别是System.Keywords属性的数组大小。在多达20个标记的情况下,一切正常,但索引中不包括任何其他标记 我的第一反应是查看IFilter捕获了什么,并使用filtdump.exe获得了以下输出 CHUNK: --------------------------------------------------------------- Attribute = {F29F85E0-4FF9-1068-AB91-08

我在Windows Search中索引PDF文件时遇到了一个限制,特别是System.Keywords属性的数组大小。在多达20个标记的情况下,一切正常,但索引中不包括任何其他标记

我的第一反应是查看IFilter捕获了什么,并使用filtdump.exe获得了以下输出

CHUNK: ---------------------------------------------------------------
    Attribute = {F29F85E0-4FF9-1068-AB91-08002B27B3D9}\5 (System.Keywords)
    idChunk = 3
    BreakType = 0 (No Break)
    Flags (chunkstate) =  (Value)
    Locale = 0 (0x0)
    IdChunkSource = 0
    cwcStartSource = 0
    cwcLenSource = 0

VALUE: ---------------------------------------------------------------
Type = 31 (0x1f), VT_LPWSTR
Value = "TAG1; TAG2; TAG3; TAG4; TAG5; TAG6; TAG7; TAG8; TAG9; TAG10; TAG11; TAG12; TAG13; TAG14; TAG15; TAG16; TAG17; TAG18; TAG19; TAG20; TAG21"
所以我可以看到所有的标签都被检索,但是最后的标签被截断了

正在转储System.Keywords的属性架构。我得到以下结果:

Property Key:          {F29F85E0-4FF9-1068-AB91-08002B27B3D9} 5
Canonical Name:        System.Keywords
Property Type:         VT_VECTOR | VT_LPWSTR
Display Name:          Tags
Edit Invitation:       Add a tag
Type Flags:            PDTF_MULTIPLEVALUES | PDTF_CANGROUPBY | PDTF_CANSTACKBY | PDTF_ISTREEPROPERTY | PDTF_ISVIEWABLE | PDTF_ISSYSTEMPROPERTY
View Flags:
Default Column Width:  11
Display Type:          PDDT_STRING
Column State:          SHCOLSTATE_TYPE_STR
Grouping Range:        PDGR_DISCRETE
Relative Desc. Type:   PDRDT_GENERAL
Sort Description:      PDSD_A_Z
Sort Desc. Labels:     A on top/Z on top
Aggregation Type:      PDAT_UNION
Condition Type:        PDCOT_STRING
Condition Operation:   COP_WORD_EQUAL
Enumerated Types:      0
Search Info Flags:     PDSIF_ININVERTEDINDEX | PDSIF_ISCOLUMN | PDSIF_ISCOLUMNSPARSE
Column Index Type:     <not specified>
Projection String      System.Keywords
Max Size:              512
属性键:{F29F85E0-4FF9-1068-AB91-08002B27B3D9}5
规范名称:System.Keywords
属性类型:VT|U向量| VT|U LPWSTR
显示名称:标签
编辑邀请:添加标记
类型标志:PDTF|u MULTIPLEVALUES | PDTF|u CANGROUPBY | PDTF|u CANSTACKBY | PDTF|u ISTREEPROPERTY | PDTF|u ISSYSTEMPROPERTY |
查看标志:
默认列宽:11
显示类型:PDDT_字符串
列状态:SHCOLSTATE\u TYPE\u STR
分组范围:PDGR\U离散
相对描述类型:PDRDT\U概述
排序说明:PDSD_A_Z
排序描述标签:A在顶部/Z在顶部
聚合类型:PDAT_UNION
条件类型:PDCOT\U字符串
条件操作:COP_WORD_相等
枚举类型:0
搜索信息标志:PDSIF_ININVERTEDINDEX | PDSIF_ISCOLUMN | PDSIF_ISCOLUMNSPARSE
列索引类型:
投影字符串系统.关键字
最大尺寸:512
同时查看文档中是否没有提到物品的最大尺寸或限制

再次查看这里提到的maxSize属性:

可选。指示属性值允许的最大大小 存储在Windows搜索数据库中。此限制适用于 向量的单个元素,而不是向量的整体。价值观 超出此大小的将被截断。默认值为“128”(字节)。 当前,Windows Search在计算时不使用maxSize 它从文件接受的数据量。相反,限制窗口 Search uses是文件大小和 从注册表中读取的MaxGrowFactor(文件大小N*MaxGrowFactor) HKEY_本地_机器->软件->微软->Windows搜索->收集 管理器->最大生长因子。默认的MaxGrowFactor为四(4)。 因此,如果您的文件类型总大小较小,但 如果属性较大,Windows Search可能不接受所有属性 要发射的数据。但是,可以将MaxGrowFactor增加到 适合你的需要

但是,我不清楚这是否会影响阵列的大小。我猜这种截断发生在Windows Search的Gatherer组件中,所以我想知道是否涉及任何注册表设置

FWIW我确实使用该实用程序查看了Windows搜索数据库(Windows.edb),我可以从模式中看到列类型是大二进制类型,因此不应该存在限制。查看原始值,我可以看到标记值的字节(由NUL字符分隔),并以@字符结尾。但只有20个数值没有确认限值


我的研究已经到了尽头,但我还没有走得更远。是否可以扩展System.Keywords的数组大小,还是Gatherer组件中的硬编码限制?任何帮助都将不胜感激,提前感谢

不幸的是,我无能为力;令人遗憾的是,Windows Search的文档记录非常糟糕。