Question

Comment régler notre fonctionnalité de recherche CQ5, exclure certaines propriétés de l'indexation, permettre la vérification orthographique, l'extraction de la racine ou d'autres caractéristiques ?

Réponse, résolution

Le module de recherche dans CQ5 est généré à l'aide de CRX.  CRX utilise un index intégré Apache Lucene pour mettre en œuvre la fonctionnalité de recherche.  CRX fournit divers paramètres et configurations pour permettre d’affiner précisément l’index en fonction de vos besoins.

Configuration de l'index de recherche :

Tout d’abord, un référentiel CRX peut comporter un ou plusieurs espaces de travail et chaque espace de travail possède son propre index de recherche.  De plus, l'index de recherche de chaque espace de travail peut être configuré séparément dans le fichier workspace.xml de l'espace de travail.

Dans une installation par défaut CQ5, vous n’avez qu’un seul espace de travail CRX appelé « crx.default ».  Cet espace de travail stocke tout le contenu de votre site (sauf les versions).  La configuration de l’index de recherche de cet espace de travail se trouve sous crx-quickstart/workspaces/crx.default/workspace.xml.  Toutes les configurations pour ceci peuvent être faites dans l'élément <SearchIndex>  Une référence de toutes ces configurations peut être trouvée ici.

Voici un exemple d’une section SearchIndex workspace.xml :

...

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

indexing_config.xml configuration:

Les configurations de workspace.xml vous permettent d’ajuster le comportement de l’index de recherche, mais ne vous permettent pas de modifier le contenu indexé.  Pour ce faire, il faut examiner le fichier indexing_config.xml qui permet de spécifier les règles d’indexation.

  • Dans des versions CQ5.4 ou ultérieures le fichier de configuration par défaut indexing_config.xml se trouve sous crx-quickstart/server/runtime/0/_crx/WEB-INF/classes.
  • Dans CQ5.5, le fichier de configuration par défaut est inclus dans le regroupement de référentiels déployés dans le conteneur OSGi.
Consultez la page de documentation Apache Jackrabbit pour plus de détails sur la configuration d'indexation : http://wiki.apache.org/jackrabbit/IndexingConfiguration

Pour ajouter une configuration d'indexation personnalisée :
  1. Copiez le fichier de configuration index de recherche par défaut indexing_config.xml sous crx-quickstart/repository/workspaces/crx.default/indexing_config.xml.
    * Pour CQ5.4 et les versions antérieures vous pouvez trouver ce fichier sous crx-quickstart/server/runtime/0/_crx/WEB-INF/classes/indexing_config.xml.
    * Pour CQ5.5, nous avons copié le fichier par défaut indexing_config.xml ci-dessous pour vous aider.
  2. Nous pouvons maintenant définir un chemin pour notre fichier indexing_config.xml personnalisé dans l’élément de recherche d'index de workspace.xml.  Ouvrez crx-quickstart/workspaces/crx.default/workspace.xml dans un éditeur de texte et ajoutez un paramètre de configuration d'indexation comme indiqué ci-dessous :
    ...
     <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> 
    ...


Pour plus d'informations sur les fonctionnalités de recherche disponibles dans CRX, voir ici.

S’applique à

CQ5.2+

indexing_config.xml de 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">

<!-- Ne pas indexer le contenu des sous-éléments -->
<index-rule nodeType="nt:resource"
condition="ancestor::subassets/@jcr:primaryType='{http://www.jcp.org/jcr/nt/1.0}unstructured'">
</index-rule>

<!--
Exclure certaines propriétés bien connues de la portée du nœud.
Index de texte intégral. N'ajoutez pas de règles en dessous de celle-ci, puisque
cette règle représente n'importe quel nœud et agit en tant que nœud par défaut ou de secours.
-->
<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>

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne