このルールでは、実際には cq:template ルールを除くすべてのプロパティがインデックスから省略されます (また、nodeScopeIndex="false" を定義したため、フルテキスト インデックスから cq:template が除外されます)。詳細については、jackrabbit のドキュメントを参照してください。
要素を定義する<property nodeScopeIndex="false">cq:template</property>
と、システムはプロパティをインデックスに含めます。ただし、nodeScopeIndex="false" は、CRX/Jackrabbit にフルテキスト インデックスにプロパティを含めないように指示します。つまり、sql で contains(...) を使用する検索、xpath で jcr:contains(...) を使用する検索を除くすべての検索で使用できます。
プロパティ全体のインデックス作成を回避するには、そのノードに一致する nodeType/condition 属性を持つ最初のインデックス ルールからプロパティを省略します。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 を使用する可能性があるため、検索インデックスから 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