Descripcion general
En Fess, puede implementar logica personalizada usando scripts en varios escenarios. Al aprovechar los scripts, puede controlar de manera flexible el procesamiento de datos durante el crawl, la personalizacion de resultados de busqueda y la ejecucion de trabajos programados.
Lenguajes de scripting compatibles
Fess soporta los siguientes lenguajes de scripting:
| Lenguaje | Identificador | Descripcion |
|---|---|---|
| Groovy | groovy | Lenguaje de scripting predeterminado. Compatible con Java y proporciona funcionalidades potentes |
| JavaScript | javascript | Lenguaje familiar para desarrolladores web |
Nota
Groovy es el mas ampliamente utilizado, y los ejemplos en esta documentacion estan escritos en Groovy.
Casos de uso de scripting
Configuracion de Data Store
En los conectores de data store, se usan scripts para mapear los datos obtenidos a los campos del indice.
url="https://example.com/article/" + data.id
title=data.name
content=data.description
lastModified=data.updated_at
Mapeo de rutas
Puede usar scripts para normalizar URLs o transformar rutas.
# Transformar URL
url.replaceAll("http://", "https://")
Trabajos programados
En los trabajos programados, puede escribir logica de procesamiento personalizada en scripts Groovy.
return container.getComponent("crawlJob").execute();
Sintaxis basica
Acceso a variables
# Acceder a datos del data store
data.fieldName
# Acceder a componentes del sistema
container.getComponent("componentName")
Operaciones de cadenas
# Concatenacion
title + " - " + category
# Reemplazo
content.replaceAll("old", "new")
# Division
tags.split(",")
Estructuras condicionales
# Operador ternario
data.status == "active" ? "Activo" : "Inactivo"
# Verificacion de null
data.description ?: "Sin descripcion"
Operaciones de fecha
# Fecha actual
new Date()
# Formato
new java.text.SimpleDateFormat("yyyy-MM-dd").format(data.date)
Objetos disponibles
Principales objetos disponibles dentro de los scripts:
| Objeto | Descripcion |
|---|---|
data | Datos obtenidos del data store |
container | Contenedor DI (acceso a componentes) |
systemHelper | Helper del sistema |
fessConfig | Configuracion de Fess |
Seguridad
Advertencia
Los scripts tienen funcionalidades poderosas, por lo que solo uselos de fuentes confiables.
Los scripts se ejecutan en el servidor
Es posible el acceso al sistema de archivos y la red
Asegurese de que solo los usuarios con privilegios de administrador puedan editar scripts
Rendimiento
Consejos para optimizar el rendimiento de los scripts:
Evitar procesamiento complejo: Los scripts se ejecutan para cada documento
Minimizar acceso a recursos externos: Las llamadas de red causan latencia
Usar cache: Considere cache para valores usados repetidamente
Depuracion
Para depurar scripts, use la salida de logs:
import org.apache.logging.log4j.LogManager
def logger = LogManager.getLogger("script")
logger.info("data.id = {}", data.id)
Configuracion del nivel de log:
app/WEB-INF/classes/log4j2.xml:
<Logger name="script" level="DEBUG"/>
Informacion de referencia
Guia de scripting Groovy - Guia de scripting Groovy
Rastreo de Almacén de Datos - Guia de configuracion de Data Store
Programador de Tareas - Guia de configuracion del programador