AEM as a Cloud Service:分断パス間で検索する際の「フィルターのインデックスなしフルテキストクエリ」警告
この記事では、非結合サブツリー全体でフルテキストクエリを実行する際に、Adobe Experience Managerでフィルターr警告のインデックスなしで頻繁にフルテキストクエリを実行することの原因と影響について説明します。
説明 description
環境
- Adobe Experience Manager(AEM)as a Cloud Service(AEMasaCS)(すべてのバージョン)
- Adobe Experience Manager
問題/症状
ISDESCENDANTNODE() パスの制限間でORを使用して2つ以上の非結合サブツリーを検索するフルテキスト JCR-SQL2 クエリを実行する場合、カスタム Lucene インデックスが定義されタグ付けされていても、次の警告がログに表示されます。
WARN org.apache.jackrabbit.oak.query.QueryImpl Fulltext query without index for filter ... no results will be returned
- 警告は1日に約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)
- 単一のサブツリー内で検索する際に not が発生します。
- パフォーマンスへの影響は観察されませんが、ログノイズが懸念されます。
- 2つのクエリされたパスは、共通の祖先を共有しません。
原因
この警告は、Oakの最初のクエリ計画フェーズで生成されます。このフェーズでは、結合されたクエリのシェイプ(フルテキスト + ORの非連結パス間)が無限インデックスコストで評価され、警告がトリガーされます。 その後、Oakはクエリを内部的に書き換え、カスタムインデックスを正しく使用して実行します。 警告は誤解を招くとみなされ、実際のインデックスの使用やクエリのパフォーマンスを反映しません。
解決策 resolution
問題を解決するには、次の手順に従います。
- クエリパターンを確認して、非結合
ISDESCENDANTNODE()パス制限でORを使用し、インデックスタグ付きのカスタム Lucene インデックスを使用することを確認します。 - 進行中の調査と更新については、アップストリームのApache Jackrabbit Oakの問題
OAK-12270を参照してください。 - 警告はOakの内部クエリ計画の結果であり、実際のインデックス作成やパフォーマンスの問題を示すものではないため、お客様側でアクションを実行する必要はありません。
- 警告の抑制またはログの調整に関する今後の変更について、Oak Jiraをモニタリングします。
recommendation-more-help
experience-cloud-kcs-help-kbarticles