Implementación del índice personalizado para la función Buscar y reemplazar (vista Source)
Información general
Esta guía proporciona instrucciones paso a paso para implementar el índice personalizado guidesAssetLucene‑1‑custom‑1 en Adobe Experience Manager (AEM) as a Cloud Service. Aunque la función estándar Buscar y reemplazar de la vista Autor funciona sin este índice, el índice personalizado es necesario específicamente para habilitar Buscar y reemplazar en la vista de Source. Buscar y reemplazar (vista de Source) permite buscar no solo el contenido creado visible, sino también la estructura XML subyacente; incluidos elementos, etiquetas y valores de atributos.
Requisitos previos
Antes de continuar con la implementación del índice, asegúrese de lo siguiente:
- Entorno de AEM as a Cloud Service con AEM Guides instalado
- Acceso a la base de código de su proyecto (repositorio Git)
- Acceso a Cloud Manager con permisos de implementación
Definición de índice
Para habilitar la característica Buscar y reemplazar (vista de Source), debe implementar un índice personalizado denominado guidesAssetLucene-1-custom-1 en el entorno de AEM Cloud Service.
Nombre del índice
guidesAssetLucene-1-custom-1
Definición de índice (.content.xml)
Cree la siguiente definición de índice en su proyecto en:
ui.apps/src/main/content/jcr_root/_oak_index/guidesAssetLucene-1-custom-1/.content.xml
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:dam="http://www.day.com/dam/1.0"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:oak="http://jackrabbit.apache.org/oak/ns/1.0"
xmlns:rep="internal"
jcr:mixinTypes="[rep:AccessControllable]"
jcr:primaryType="oak:QueryIndexDefinition"
async="[async,nrt]"
compatVersion="{Long}2"
evaluatePathRestrictions="{Boolean}true"
includedPaths="[/content/dam]"
selectionPolicy="tag"
tags="[ditaSearch]"
type="lucene">
<aggregates jcr:primaryType="nt:unstructured">
<dam:Asset jcr:primaryType="nt:unstructured">
<include0
jcr:primaryType="nt:unstructured"
path="jcr:content/renditions/original/jcr:content"
relativeNode="{Boolean}true"/>
</dam:Asset>
</aggregates>
<analyzers jcr:primaryType="nt:unstructured">
<default jcr:primaryType="nt:unstructured">
<tokenizer
jcr:primaryType="nt:unstructured"
name="Whitespace"/>
</default>
</analyzers>
<indexRules jcr:primaryType="nt:unstructured">
<dam:Asset
jcr:primaryType="nt:unstructured"
indexNodeName="{Boolean}true">
<properties jcr:primaryType="nt:unstructured">
<cqTags
jcr:primaryType="nt:unstructured"
name="jcr:content/metadata/cq:tags"
nodeScopeIndex="{Boolean}true"
propertyIndex="{Boolean}true"
useInSpellcheck="{Boolean}true"
useInSuggest="{Boolean}true"/>
<jcrLastModified
jcr:primaryType="nt:unstructured"
name="jcr:content/jcr:lastModified"
ordered="{Boolean}true"
propertyIndex="{Boolean}true"
type="Date"/>
<jcrCreated
jcr:primaryType="nt:unstructured"
name="jcr:created"
ordered="{Boolean}true"
propertyIndex="{Boolean}true"
type="Date"/>
<guidesParentMaps
jcr:primaryType="nt:unstructured"
name="jcr:content/guidesParentMaps"
propertyIndex="{Boolean}true"/>
<guidesDirectParentMaps
jcr:primaryType="nt:unstructured"
name="jcr:content/guidesDirectParentMaps"
propertyIndex="{Boolean}true"/>
<ditaClass
jcr:primaryType="nt:unstructured"
name="jcr:content/metadata/dita_class"
propertyIndex="{Boolean}true"/>
<nodeNameLowerCase
jcr:primaryType="nt:unstructured"
function="fn:lower-case(fn:name())"
ordered="{Boolean}true"
propertyIndex="{Boolean}true"/>
<cqDriveLock
jcr:primaryType="nt:unstructured"
name="jcr:content/cq:driveLock"
propertyIndex="{Boolean}true"
ordered="{Boolean}true"/>
<docState
jcr:primaryType="nt:unstructured"
name="jcr:content/metadata/docstate"
propertyIndex="{Boolean}true"
ordered="{Boolean}true"/>
<jcrPath
jcr:primaryType="nt:unstructured"
function="fn:path()"
ordered="{Boolean}true"/>
<dcTitleLowerCase
jcr:primaryType="nt:unstructured"
function="fn:lower-case(jcr:first(jcr:content/metadata/@dc:title))"
propertyIndex="{Boolean}true"
ordered="{Boolean}true"/>
<dcTitle
jcr:primaryType="nt:unstructured"
name="jcr:content/metadata/dc:title"
propertyIndex="{Boolean}true"/>
</properties>
</dam:Asset>
</indexRules>
<tika jcr:primaryType="nt:unstructured">
<mimeTypes jcr:primaryType="nt:unstructured">
<application jcr:primaryType="nt:unstructured">
<xml
jcr:primaryType="nt:unstructured"
mappedType="application/dita+xml"/>
</application>
<text jcr:primaryType="nt:unstructured">
<markdown
jcr:primaryType="nt:unstructured"
mappedType="text/markdown+source"/>
</text>
</mimeTypes>
</tika>
</jcr:root>
Pasos de implementación
Para obtener instrucciones detalladas sobre la implementación de índices personalizados en AEM as a Cloud Service, vea Búsqueda e indexación de contenido: AEM as a Cloud Service.
Puntos importantes para este índice
Cuando siga la guía de implementación, utilice los siguientes detalles específicos para el índice Buscar y reemplazar:
-
Nombre de índice:
guidesAssetLucene-1-custom-1 -
Tipo de índice: índice totalmente personalizado (no una personalización del índice OOTB)
-
Ubicación:
ui.apps/src/main/content/jcr_root/_oak_index/guidesAssetLucene-1-custom-1/.content.xml -
Se requieren propiedades del paquete:
noIntermediateSaves=trueallowIndexDefinitions=true
Reindexación
AEM as a Cloud Service administra la reindexación automáticamente al implementar el índice a través de la canalización de CD/CI de Cloud Manager.
La indexación suele gestionarse automáticamente. Sin embargo, si no se puede buscar en los datos antiguos incluso después de una implementación correcta y de la finalización del proceso de indexación, se debe realizar una vez un reindexado manual del índice.
Qué esperar
- El trabajo de indexación se iniciará automáticamente después de la implementación.
- Puede monitorizar el progreso en la página de compilación de Cloud Manager.
- El entorno sigue funcionando a pleno rendimiento durante la indexación.
de verificación
Después de la implementación y la finalización de la indexación, compruebe que el índice funciona correctamente.
Verificar implementación del índice
En su entorno de desarrollo (si CRXDE Lite está disponible):
- Navegue hasta
/oak:index/guidesAssetLucene-1-custom-1. - Compruebe que el nodo existe con la configuración esperada.
Comprobación de la función Buscar y reemplazar
La verificación principal consiste en probar la función:
- Abra AEM Guides.
- Vaya a Herramientas > Guías > Buscar y reemplazar en el repositorio.
- Configure una búsqueda de texto en los ficheros DITA o Markdown.
- Compruebe que los resultados de la búsqueda se devuelven correctamente.
- Pruebe la funcionalidad de reemplazo en un archivo de prueba.