Pergunta
Como podemos ajustar a nossa funcionalidade de pesquisa CQ5, excluir certas propriedades de serem indexadas, ativar a verificação ortográfica, lematização ou outros recursos?
Resposta, Resolução
O módulo de pesquisa no CQ5 é construído usando o CRX. O CRX usa um índice Apache Lucene incorporado para implementar a pesquisa. O CRX fornece vários parâmetros e configurações para permitir que você ajuste o índice para atender às suas necessidades.
Configuração do Índice de pesquisa:
Em primeiro lugar, um repositório CRX pode ter um ou vários espaços de trabalho e cada espaço de trabalho possui seu próprio índice de pesquisa. Além disso, o índice de pesquisa de cada espaço de trabalho pode ser configurado separadamente no arquivo workspace.xml do espaço de trabalho.
Em uma instalação padrão do CQ5, você tem apenas um espaço de trabalho do CRX chamada "crx.default". Este espaço de trabalho armazena todo o conteúdo do seu site (excluindo versões). A configuração do índice de pesquisa para este espaço de trabalho pode ser encontrada em crx-quickstart/workspaces/crx.default/workspace.xml. Todas as configurações para isso podem ser feitas dentro do elemento <SearchIndex>. Uma referência de todas essas configurações pode ser encontrada aqui.
Aqui está um exemplo de seção de índice de pesquisa workspace.xml:
...
<SearchIndex class="com.day.crx.query.lucene.LuceneHandler"> <param name="path" value="${wsp.home}/index"/> </SearchIndex> ...
configuração indexing_config.xml:
As configurações no workspace.xml permitem ajustar o comportamento do índice de pesquisa, mas não permitem modificar qual conteúdo está sendo indexado. Para configurar isso, precisamos examinar o arquivo indexing_config.xml que nos permite especificar as regras de indexação.
- Nas versões do CQ <= 5,4 o arquivo de configuração padrão
indexing_config.xml
pode ser encontrado emcrx-quickstart/server/runtime/0/_crx/WEB-INF/classes.
No CQ 5.5, o arquivo de configuração padrão é incorporado no pacote de repositório implementado no contêiner OSGi.
- Copie o arquivo de configuração do índice de pesquisa padrão indexing_config.xml em crx-quickstart/repository/workspaces/crx.default/indexing_config.xml.
* Para CQ5.4 e versões mais antigas você pode encontrar este arquivo em crx-quickstart/server/runtime/0/_crx/WEB-INF/classes/indexing_config.xml.
* Para o CQ5.5, copiamos o arquivo padrão indexing_config.xml abaixo para sua conveniência. - Agora podemos definir um caminho para nosso indexing_config.xml personalizado no elemento SearchIndex do workspace.xml. Abra o crx-quickstart/workspaces/crx.default/workspace.xml em um editor de texto e adicione um parâmetro indexingConfiguration como mostrado abaixo:
...<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>
Aplica-se a
CQ 5.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"> | |
<!-- Não indexe o conteúdo de sub-conjuntos --> | |
<index-rule nodeType="nt:resource" | |
condition="ancestor::subassets/@jcr:primaryType='{http://www.jcp.org/jcr/nt/1.0}unstructured'"> | |
</index-rule> | |
<!-- | |
Exclui algumas propriedades conhecidas do escopo do nó | |
índice de texto completo. Não adicione regras abaixo desta, já que | |
essa regra corresponde a qualquer nó e atua como um padrão / fallback. | |
--> | |
<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> | |
<!-- índice ordenar por eixo filho --> | |
<include>jcr:content/renditions/original/jcr:content/jcr:lastModified</include> | |
</aggregate> | |
<!-- nt:file índice ordenar por eixo filho --> | |
<aggregate primaryType="nt:file"> | |
<include>jcr:content</include> | |
<include>jcr:content/jcr:lastModified</include> | |
</aggregate> | |
<!-- cq:Page índice ordenar por eixo filho --> | |
<aggregate primaryType="cq:Page"> | |
<include>jcr:content</include> | |
<include>jcr:content/cq:lastModified</include> | |
</aggregate> | |
</configuration> | |