Aem 理解CQ5-Lucene索引规则

Aem 理解CQ5-Lucene索引规则,aem,lucene,jcr-sql2,Aem,Lucene,Jcr Sql2,信息: 我已经向cq5提供了一个索引配置文件。我没有通过指定以下规则对属性cq:template编制索引: <index-rule nodeType="nt:base"> <property nodeScopeIndex="false">cq:template</property> </index-rule> 您的规则实际上省略了索引中除cq:template规则之外的所有属性(并且从全文索引中排除cq:template,因为您定义了nodeS

信息: 我已经向cq5提供了一个索引配置文件。我没有通过指定以下规则对属性cq:template编制索引:

<index-rule nodeType="nt:base">
 <property nodeScopeIndex="false">cq:template</property>
</index-rule>

您的规则实际上省略了索引中除cq:template规则之外的所有属性(并且从全文索引中排除cq:template,因为您定义了nodeScopeIndex=“false”)。有关更多详细信息,请参阅

定义元素
cq:template
时,系统会在索引中包含该属性。但是,nodeScopeIndex=“false”告诉CRX/Jackrabbit不要将该属性包含在全文索引中。这意味着除了在sql中使用contains(…)或在xpath中使用jcr:contains(…)的搜索之外,它将可用于所有搜索

要避免对属性进行完全索引,请使用与其节点匹配的nodeType/condition属性从第一个索引规则中省略该属性。它必须是第一个匹配规则,因为index_config.xml文件中的规则是自上而下处理的

因此,要从CQ5中的索引中删除cq:template属性,请执行以下操作:

  • 提取索引_config.xml的现成CQ5版本(有关说明,请参阅)
  • 将最后一条规则
    中的正则表达式从
    *:.*
    更改为
    ^(?!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:允许的模板
    cq:childrenOrder
    cq:cugEnabled
    cq:cugPrincipals
    cq:cugRealm
    cq:设计路径
    cq:Iscanceledforchildren
    cq:isDeep
    cq:lastModified
    cq:lastModifiedBy
    cq:lastPublished
    cq:lastPublishedBy
    cq:lastReplicated
    cq:lastReplicatedBy
    cq:lastReplicationAction
    cq:lastReplicationStatus
    cq:lastRolledout
    cq:lastRolledoutBy
    姓名
    父路径
    cq:段
    cq:兄弟顺序
    cq:模板
    cq:触发器
    cq:versionComment
    jcr:createdBy
    jcr:lastModifiedBy
    吊索:别名
    吊索:资源型
    吊索:vanityPath
    ^(?!cq:模板)。*:*$
    
    注意事项:

    我不确定从搜索索引中删除cq:template是否安全,因为产品代码可能会以某种方式使用它。作为最佳实践,建议仅排除自定义应用程序属性。此外,必须在全文索引中包含包含对其他内容路径的引用的属性。这是因为当您在CQ5(AEM)中移动页面时,它会执行jcr:contains搜索以查看该页面的引用位置。因此,如果您使用nodeScopeIndex=“false”排除这些属性,或者通过修改上面的正则表达式来忽略它们,那么引用搜索将失败。然后,您将得到对旧路径的陈旧引用


    参考资料:

  • 官方索引_config.xml参考:
  • 关于如何在CQ5中更新index_config.xml的说明:

  • 这是一个非常好的回答,应该是公认的答案。
    <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>