Apercu
Dans Fess, vous pouvez utiliser des scripts pour implementer une logique personnalisee dans diverses situations. En utilisant des scripts, vous pouvez controler de maniere flexible le traitement des donnees lors du crawl, la personnalisation des resultats de recherche, l’execution de taches planifiees, etc.
Langages de script pris en charge
Fess prend en charge les langages de script suivants :
| Langage | Identifiant | Description |
|---|---|---|
| Groovy | groovy | Langage de script par defaut. Compatible avec Java et offre des fonctionnalites puissantes |
| JavaScript | javascript | Langage familier aux developpeurs web |
Note
Groovy est le plus largement utilise, et les exemples de cette documentation sont ecrits en Groovy.
Cas d’utilisation des scripts
Configuration du Data Store
Dans les connecteurs Data Store, les scripts sont utilises pour mapper les donnees recuperees aux champs d’index.
url="https://example.com/article/" + data.id
title=data.name
content=data.description
lastModified=data.updated_at
Mapping de chemin
Les scripts peuvent etre utilises pour la normalisation d’URL et la conversion de chemin.
# Convertir l'URL
url.replaceAll("http://", "https://")
Taches planifiees
Dans les taches planifiees, vous pouvez ecrire une logique de traitement personnalisee en script Groovy.
return container.getComponent("crawlJob").execute();
Syntaxe de base
Acces aux variables
# Acceder aux donnees du data store
data.fieldName
# Acceder aux composants systeme
container.getComponent("componentName")
Manipulation de chaines
# Concatenation
title + " - " + category
# Remplacement
content.replaceAll("old", "new")
# Division
tags.split(",")
Conditions
# Operateur ternaire
data.status == "active" ? "Actif" : "Inactif"
# Verification de null
data.description ?: "Pas de description"
Manipulation de dates
# Date et heure actuelle
new Date()
# Formatage
new java.text.SimpleDateFormat("yyyy-MM-dd").format(data.date)
Objets disponibles
Principaux objets utilisables dans les scripts :
| Objet | Description |
|---|---|
data | Donnees recuperees du data store |
container | Conteneur DI (acces aux composants) |
systemHelper | Helper systeme |
fessConfig | Configuration de Fess |
Securite
Avertissement
Les scripts ont des capacites puissantes, utilisez-les uniquement depuis des sources fiables.
Les scripts sont executes sur le serveur
L’acces au systeme de fichiers et au reseau est possible
Assurez-vous que seuls les utilisateurs avec droits d’administration peuvent modifier les scripts
Performance
Conseils pour optimiser les performances des scripts :
Eviter les traitements complexes : Les scripts sont executes pour chaque document
Minimiser l’acces aux ressources externes : Les appels reseau causent des delais
Utiliser le cache : Envisagez le cache pour les valeurs utilisees de maniere repetee
Debogage
Pour le debogage des scripts, utilisez la sortie de logs :
import org.apache.logging.log4j.LogManager
def logger = LogManager.getLogger("script")
logger.info("data.id = {}", data.id)
Configuration du niveau de log :
app/WEB-INF/classes/log4j2.xml :
<Logger name="script" level="DEBUG"/>
Informations de reference
Guide de script Groovy - Guide de script Groovy
Présentation - Guide de configuration Data Store
Planificateur de tâches - Guide de configuration du planificateur