您的规则实际上省略了索引中的所有属性,除了 cq:template 规则(并从全文索引中排除 cq:template,因为您定义了 nodeScopeIndex="false")。有关更多详细信息,请参阅jackrabbit 文档。
定义元素<property nodeScopeIndex="false">cq:template</property>
时,系统会将属性包含在索引中。但是,nodeScopeIndex="false" 告诉 CRX/Jackrabbit 不要将该属性包含在全文索引中。这意味着它可用于所有搜索,除了在 sql 中使用 contains(...) 或在 xpath 中使用 jcr:contains(...) 的搜索。
为了避免完全索引一个属性,从第一个索引规则中省略它,它的节点类型/条件属性与其节点匹配。它必须是第一个匹配规则,因为 index_config.xml 文件中的规则是自上而下处理的。
因此,要从 CQ5 的索引中删除 cq:template 属性,请执行以下操作:
- 提取开箱即用的 CQ5 版本的 indexing_config.xml(有关说明,请参阅此文档)
<property nodeScopeIndex="false">cq:tempate</property>
从_<index-rule nodeType="nt:base">
- 将最后一条规则中的正则表达式
<property isRegexp="true">
从更改.*:.*
为^(?!cq:template).*:.*$
:
进行更改后,索引规则应如下所示:
<index-rule nodeType="nt:base">
<property nodeScopeIndex="false">analyticsProvider</property>
<property nodeScopeIndex="false">analyticsSnippet</property>
<property nodeScopeIndex="false">hideInNav</property>
<property nodeScopeIndex="false">offTime</property>
<property nodeScopeIndex="false">onTime</property>
<property nodeScopeIndex="false">cq:allowedTemplates</property>
<property nodeScopeIndex="false">cq:childrenOrder</property>
<property nodeScopeIndex="false">cq:cugEnabled</property>
<property nodeScopeIndex="false">cq:cugPrincipals</property>
<property nodeScopeIndex="false">cq:cugRealm</property>
<property nodeScopeIndex="false">cq:designPath</property>
<property nodeScopeIndex="false">cq:isCancelledForChildren</property>
<property nodeScopeIndex="false">cq:isDeep</property>
<property nodeScopeIndex="false">cq:lastModified</property>
<property nodeScopeIndex="false">cq:lastModifiedBy</property>
<property nodeScopeIndex="false">cq:lastPublished</property>
<property nodeScopeIndex="false">cq:lastPublishedBy</property>
<property nodeScopeIndex="false">cq:lastReplicated</property>
<property nodeScopeIndex="false">cq:lastReplicatedBy</property>
<property nodeScopeIndex="false">cq:lastReplicationAction</property>
<property nodeScopeIndex="false">cq:lastReplicationStatus</property>
<property nodeScopeIndex="false">cq:lastRolledout</property>
<property nodeScopeIndex="false">cq:lastRolledoutBy</property>
<property nodeScopeIndex="false">cq:name</property>
<property nodeScopeIndex="false">cq:parentPath</property>
<property nodeScopeIndex="false">cq:segments</property>
<property nodeScopeIndex="false">cq:siblingOrder</property>
<property nodeScopeIndex="false">cq:template</property>
<property nodeScopeIndex="false">cq:trigger</property>
<property nodeScopeIndex="false">cq:versionComment</property>
<property nodeScopeIndex="false">jcr:createdBy</property>
<property nodeScopeIndex="false">jcr:lastModifiedBy</property>
<property nodeScopeIndex="false">sling:alias</property>
<property nodeScopeIndex="false">sling:resourceType</property>
<property nodeScopeIndex="false">sling:vanityPath</property>
<property isRegexp="true">^(?!cq:template).*:.*$</property>
</index-rule>
警告说明:
我不确定从搜索索引中删除 cq:template 是否安全,因为产品代码可能会以某种方式使用它。作为最佳实践,建议仅排除自定义应用程序属性。此外,您必须在全文索引中包含对其他内容路径的引用的属性。这是因为当您在 CQ5 (AEM) 中移动页面时,它会执行 jcr:contains 搜索以查看该页面的引用位置。因此,如果您使用 nodeScopeIndex="false" 排除此类属性,或者通过修改上面的正则表达式以省略它们,那么参考搜索将失败。然后你会得到对旧路径的过时引用。
参考:
- 官方 indexing_config.xml 参考:http ://wiki.apache.org/jackrabbit/IndexingConfiguration
- 关于如何在 CQ5 中更新 indexing_config.xml 的说明:http: //helpx.adobe.com/experience-manager/kb/SearchIndexingConfig.html