Suchtiefe der AEM CQ Volltext-Suche bei Seiten-Inhalten

Die integrierte Volltextsuche von AEM CQ nach Seiten (cq:Page respektive cq:PageContent) besitzt eine wenig bekannte Einschränkung. Die Suche findet nur auf vier Node-Ebenen innerhalb des PageContent-Nodes (jcr:content) statt.

Diese Einschränkung fällt oft nicht auf, da eher selten eine tiefere Node-Struktur anzutreffen ist. Es gibt aber Fälle, wo komplexe Komponenten tiefere Strukturen aufweisen und die Inhalte dann mit der Volltextsuche nicht mehr gefunden werden. Beim Testen ist die Wahrscheinlichkeit eher klein diesen Fall zu erkennen. Daher ist es wichtig diese Einschränkung zu kennen und in der Entwicklung bei der Verwendung tieferer Node-Strukturen zu beachten.

Indexing Configuration

Der Grund für diese Einschränkung liegt in der Such-Index Konfiguration von AEM respektive CRX. Diese Konfiguration hat entscheidenden Einfluss auf den Aufbau des JCR-Such-Indexes und damit auf die Performance von Queries. Hintergrund-Informationen über die Indexing-Configuration ist in der Jackrabbit-Dokumentation zu finden: http://wiki.apache.org/jackrabbit/IndexingConfiguration.

Anpassung der Suchtiefe

Die Suchtiefe kann über eine Anpassung der Indexing Configuration verändert werden. Damit diese angepasst werden kann, muss in einem ersten Schritt die Datei crx-quickstart/repository/workspaces/crx.default/workspace.xml angepasst werden. Die SearchIndex-Konfiguration wird um folgenden Parameter ergänzt:

<param name=“indexingConfiguration“ value=“${wsp.home}/indexing_config.xml“/>

Damit verwendet der com.day.crx.query.lucene.LuceneHandler die anpassbare Konfiguration und nicht mehr die Standard indexing_config.xml. Die Standard indexing_config.xml liegt ab CQ 5.5 im OSGI-Bundle Day CRX Sling – CRX Embedded Repository (com.day.crx.sling.server) im JAR crx-core-x.x.x.jar unter com/day/crx/query/lucene/indexing_config.xml. Diese Konfigurations-Datei kann nun in den in der indexingConfiguration definierten Pfad kopiert werden.

In der indexing_config.xml können nun unter <aggregate primaryType=“cq:PageContent“> zusätzliche Levels eingefügt werden.

Damit die Änderung aktiv wird, muss der Such-Index von AEM neu aufgebaut werden.

Bei einer Anpassung muss berücksichtigt werden, dass der Index  grösser wird, da zusätzliche Inhalte indiziert werden. Zudem muss bei einem Update auf eine neue Version von AEM die individuelle Konfiguration allenfalls an neue Standard-Werte angepasst werden. Diese Anpassung sollte also nur dann durchgeführt werden, wenn mehr als vier Node Levels vorhanden sind und die Inhalte dieser Levels durchsucht werden müssen.

Überprüfen der Suchtiefe

Die Tiefe der Suche kann mit etwas Test-Content und folgender Query in CRX DE getestet werden: /jcr:root/content//element(*, cq:Page)[jcr:contains(., ‚x5′)]. Wobei hier x5 beispielsweise ein Wert sein kann, welcher in einem Node Level 5 vorkommt.

Relevant kann dieses Thema auch im Zusammenhang mit der Performance Verbesserung von JCR Queries sein.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>