AEM as a Cloud Service:跨不相交路径搜索时,出现“没有过滤器索引的全文查询”警告

本文解释了在跨不相交子树执行全文查询时,Adobe Experience Manager中过滤器r警告的频繁全文查询没有索引的原因和影响。

描述 description

环境

  • Adobe Experience Manager (AEM) as a Cloud Service (AEMasaCS)(所有版本)
  • Adobe Experience Manager

问题/症状

当执行跨两个或更多不相交子树搜索且使用ISDESCENDANTNODE()路径限制之间的OR的全文JCR-SQL2查询时,即使已定义和标记自定义Lucene索引,日志中仍会显示以下警告:

WARN  org.apache.jackrabbit.oak.query.QueryImpl Fulltext query without index for filter ... no results will be returned
  • 每天记录警告约3000次。
  • 触发警告的示例查询:
SELECT *
FROM [ nt:base]  AS node
WHERE ...
  AND (
    isdescendantnode(node,'/content/site-path') OR
    isdescendantnode(node,'/var/pim/green/products')
  )
OPTION (index tag datevCommon)
  • 在单个子树中搜索时,问题不是
  • 未观察到性能影响,但日志噪音令人担忧。
  • 两个查询的路径不共享同一个祖先。

原因

警告会在Oak的初始查询规划阶段生成,在此阶段,组合查询形状(全文+ OR跨不相交路径)会以无限索引成本进行评估,从而触发警告。 然后,Oak在内部重写查询,并正确使用自定义索引来执行。 该警告被视为具有误导性,不反映实际的索引使用情况或查询性能。

解决方法 resolution

请按照以下步骤解决问题:

  1. 查看查询模式以确认它跨不相交的ISDESCENDANTNODE()路径限制使用OR并且使用带有索引标记的自定义Lucene索引。
  2. 有关正在进行的调查和更新,请参阅上游Apache Jackrabbit Oak问题OAK-12270
  3. 客户无需执行任何操作,因为警告是Oak内部查询规划的结果,不会指示真正的索引或性能问题。
  4. 监控Oak Jira,了解未来有关警告抑制或日志记录调整的任何更改。
recommendation-more-help
experience-cloud-kcs-help-kbarticles