Frage

Wie lässt sich die CQ5-Suchfunktion verbessern, indem Sie bestimmte Eigenschaften von der Indexierung ausschließen, die Rechtschreibprüfung aktiveren oder durch ein Verstopfen und andere Features?

Antwort, Auflösung

Das Suchmodul in CQ5 wird mithilfe von CRX erstellt.  CRX verwendet einen eingebetteten Apache Lucene, um die Suche zu implementieren.  CRX bietet verschiedene Parameter und Konfigurationen, um Ihnen die Möglichkeit zu geben, den Index festzulegen, um den Anforderungen Ihres Unternehmens gerecht zu werden.

Suchindex-Konfiguration:

Zuallererst kann eine CRX-Repository einen oder mehrere Arbeitsbereiche haben und jeder davon hat seinen eigenen Suchindex.  Außerdem kann der Suchindex jedes Arbeitsbereiches in der Arbeitsbereich-Datei workspace.xml separat konfiguriert werden.

Bei einer Installation der standardmäßigen CQ5 haben Sie nur einen CRX-Arbeitsbereich mit dem Namen „crx.default“.  Dieser Arbeitsbereich speichert den Inhalt Ihrer gesamten Site (exklusive de Versionen).  Die Suchindex-Konfiguration für diesen Arbeitsbereich kann unter crx-quickstart/Arbeitsplätze/crx.default/workspace.xml gefunden werden  Alle Konfigurationen dafür können im <SearchIndex>-Element vorgenommen werden.  Ein Verweis auf all diese Konfigurationen finden Sie hier.

Hier sehen Sie das Beispiel einer workspace.xml Suchindex-Sektion:

...

 <SearchIndex class="com.day.crx.query.lucene.LuceneHandler"> <param name="path" value="${wsp.home}/index"/> </SearchIndex> ...

indexing_config.xml configuration:

Die Konfigurationen in der Datei workspace.xml erlauben es Ihnen, das Verhalten des Suchindex einzustellen, aber Sie können nicht ändern, welcher Inhalt indexiert wird.  Um dies zu konfigurieren, müssen wir uns die Datei indexing_config.xml ansehen, die es uns erlaubt, Indexierungsregeln anzugeben.

  • In CQ-Versionen < = 5,4 finden Sie die Standardkonfigurationsdatei indexing_config.xml unter crx-quickstart/Server/runtime/0/_crx/WEB-INF/classes.
  • In CQ5.5 ist die Standardkonfigurationsdatei in das im OSGi-Container bereitgestellte Projektarchiv-Bundle eingebettet.
Siehe folgende Apache Jackrabbit-Dokumentationsseite für weitere Details zur Indexierungskonfiguration: http://wiki.apache.org/jackrabbit/IndexingConfiguration

So fügen Sie eine benutzerdefinierte Indexierungskonfiguration hinzu:
  1. Kopieren Sie die Standard-Suchindex-Konfigurationsdatei indexing_config.xml unter crx-quickstart/repository/workspaces/crx.default/indexing_config.xml.
    * Für CQ5.4 und ältere Versionen finden Sie diese Datei unter crx-quickstart/Server/runtime/0/_crx/WEB-INF/classes/indexing_config.xml.
    * Für CQ5.5 haben wir die Standarddatei indexing_config.xml unten für Sie kopiert.
  2. Jetzt können wir einen Pfad für unsere eigene indexing_config.xml im SearchIndex-Element von workspace.xml festlegen.  Öffnen Sie „crx-quickstart/workspaces/crx.default/workspace.xml“ in einem Texteditor und fügen Sie ein indexingConfiguration-Paramter wie unten gezeigt hinzu:
    ...
     <SearchIndex class="com.day.crx.query.lucene.LuceneHandler"> <param name="path" value="${wsp.home}/index"/> <param name="resultFetchSize" value="50" /> <param name="indexingConfiguration" value="${wsp.home}/indexing_config.xml"/> </SearchIndex> 
    ...


Eine Übersicht über die Suchfunktionen, die in CRX verfügbar sind, finden Sie hier.

Gilt für

CQ5.2+

indexing_config.xml aus CQ5.5

<?xml version="1.0"?>
<!DOCTYPE configuration SYSTEM "http://jackrabbit.apache.org/dtd/indexing-configuration-1.2.dtd">
<configuration
xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:dam="http://www.day.com/dam/1.0"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
xmlns:sling="http://sling.apache.org/jcr/sling/1.0">

<!-- Indexieren Sie keinen Content von Teilassets -->
<index-rule nodeType="nt:resource"
condition="ancestor::subassets/@jcr:primaryType='{http://www.jcp.org/jcr/nt/1.0}unstructured'">
</index-rule>

<!--
Schließen Sie einige bekannte Eigenschaften aus dem Knotenbereich aus
Volltextindex. Fügen Sie hierunter keine Regeln hinzu, da
diese Regel stimmt mit jedem beliebigen Knoten überein und fungiert als Standard/Rückgriff..
-->
<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">*:.*</property>
</index-rule>

<!-- Cq Page for jcr:contains(jcr:content, "...") searches -->
<aggregate primaryType="cq:PageContent">
<include>*</include>
<include>*/*</include>
<include>*/*/*</include>
<include>*/*/*/*</include>
</aggregate>

<aggregate primaryType="dam:Asset">
<include>jcr:content</include>
<include>jcr:content/metadata</include>
<include>jcr:content/metadata/*</include>
<include>jcr:content/renditions</include>
<include>jcr:content/renditions/original</include>
<include>jcr:content/renditions/original/jcr:content</include>
<!-- child axis orderby index -->
<include>jcr:content/renditions/original/jcr:content/jcr:lastModified</include>
</aggregate>

<!-- nt:file child axis orderby index -->
<aggregate primaryType="nt:file">
<include>jcr:content</include>
<include>jcr:content/jcr:lastModified</include>
</aggregate>

<!-- cq:Page child axis orderby index -->
<aggregate primaryType="cq:Page">
<include>jcr:content</include>
<include>jcr:content/cq:lastModified</include>
</aggregate>

</configuration>

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie