Apercu
Le connecteur JSON fournit la fonctionnalite permettant de recuperer des donnees a partir de fichiers JSON ou JSONL locaux et de les enregistrer dans l’index Fess.
Cette fonctionnalite necessite le plugin fess-ds-json.
Prerequis
L’installation du plugin est requise
L’acces aux fichiers JSON est necessaire
La structure du JSON doit etre comprise
Installation du plugin
Methode 1 : Placement direct du fichier JAR
# Telecharger depuis Maven Central
wget https://repo1.maven.org/maven2/org/codelibs/fess/fess-ds-json/X.X.X/fess-ds-json-X.X.X.jar
# Placement
cp fess-ds-json-X.X.X.jar $FESS_HOME/app/WEB-INF/lib/
# ou
cp fess-ds-json-X.X.X.jar /usr/share/fess/app/WEB-INF/lib/
Methode 2 : Installation depuis l’interface d’administration
Ouvrir « Systeme » -> « Plugins »
Telecharger le fichier JAR
Redemarrer Fess
Configuration
Configurez depuis l’interface d’administration via « Crawler » -> « Data Store » -> « Nouveau ».
Configuration de base
| Element | Exemple |
|---|---|
| Nom | Products JSON |
| Nom du gestionnaire | JsonDataStore |
| Active | Oui |
Configuration des parametres
Fichier local :
files=/path/to/data.json
fileEncoding=UTF-8
Fichiers multiples :
files=/path/to/data1.json,/path/to/data2.json
fileEncoding=UTF-8
Specification de repertoire :
directories=/path/to/json_dir/
fileEncoding=UTF-8
Liste des parametres
| Parametre | Requis | Description |
|---|---|---|
files | Non | Chemin du fichier JSON (plusieurs separes par des virgules) |
directories | Non | Chemin du repertoire contenant les fichiers JSON |
fileEncoding | Non | Encodage des caracteres (par defaut : UTF-8) |
Avertissement
Il est necessaire de specifier files ou directories. Si aucun n’est specifie, une DataStoreException sera levee. Si les deux sont specifies, files a la priorite et directories est ignore.
Note
Ce connecteur ne prend en charge que les fichiers JSON sur le systeme de fichiers local. L’acces HTTP et les fonctions d’authentification API ne sont pas pris en charge.
Configuration des scripts
Objet JSON simple :
url="https://example.com/product/" + data.id
title=data.name
content=data.description
price=data.price
category=data.category
Objet JSON imbrique :
url="https://example.com/product/" + data.id
title=data.product.name
content=data.product.description
price=data.product.pricing.amount
author=data.product.author.name
Traitement des elements de tableau :
url="https://example.com/article/" + data.id
title=data.title
content=data.body
tags=data.tags.join(", ")
categories=data.categories[0].name
Champs disponibles
data.<nom_champ>- Champ de l’objet JSONdata.<parent>.<enfant>- Objet imbriquedata.<tableau>[<indice>]- Element de tableaudata.<tableau>.<methode>- Methodes de tableau (join, length, etc.)
Details du format JSON
Format de fichier JSON
Le connecteur JSON lit les fichiers au format JSONL (JSON Lines). C’est un format ou un objet JSON est ecrit par ligne.
Note
Les fichiers JSON au format tableau ( [{...}, {...}] ) ne peuvent pas etre lus directement. Veuillez convertir au format JSONL.
Fichier au format JSONL :
{"id": 1, "name": "Product A", "description": "Description A"}
{"id": 2, "name": "Product B", "description": "Description B"}
Exemples d’utilisation
Catalogue de produits
Parametres :
files=/var/data/products.json
fileEncoding=UTF-8
Scripts :
url="https://shop.example.com/product/" + data.product_id
title=data.name
content=data.description + " Prix : " + data.price + " EUR"
digest=data.category
price=data.price
Integration de plusieurs fichiers JSON
Parametres :
files=/var/data/data1.json,/var/data/data2.json
fileEncoding=UTF-8
Scripts :
url="https://example.com/item/" + data.id
title=data.title
content=data.content
Depannage
Fichier introuvable
Symptome : FileNotFoundException
Verifications :
Verifier que le chemin du fichier est correct
Verifier que le fichier existe
Verifier les permissions de lecture du fichier
Erreur d’analyse JSON
Symptome : JsonParseException ou Unexpected character
Verifications :
Verifier que le fichier JSON est au bon format :
# Validation du JSON cat data.json | jq .
Verifier l’encodage des caracteres
Verifier l’absence de caracteres ou de sauts de ligne non valides
Verifier l’absence de commentaires (non autorises dans la norme JSON)
Aucune donnee recuperee
Symptome : Le crawl reussit mais le nombre de resultats est 0
Verifications :
Verifier la structure JSON
Verifier la configuration des scripts
Verifier les noms de champs (y compris les majuscules et minuscules)
Verifier les messages d’erreur dans les journaux
Fichiers JSON volumineux
Symptome : Memoire insuffisante ou delai d’attente depasse
Solution :
Diviser le fichier JSON en plusieurs fichiers
Augmenter la taille du heap de Fess
Utilisation avancee des scripts
Traitement conditionnel
Chaque champ est evalue comme une expression independante. Pour les valeurs conditionnelles, utilisez l’operateur ternaire :
url=data.status == "published" ? "https://example.com/product/" + data.id : null
title=data.status == "published" ? data.name : null
content=data.status == "published" ? data.description : null
price=data.status == "published" ? data.price : null
Jointure de tableaux
url="https://example.com/article/" + data.id
title=data.title
content=data.content
tags=data.tags ? data.tags.join(", ") : ""
categories=data.categories.collect { it.name }.join(", ")
Configuration des valeurs par defaut
url="https://example.com/item/" + data.id
title=data.title ?: "Sans titre"
content=data.description ?: (data.summary ?: "Pas de description")
price=data.price ?: 0
Formatage des dates
url="https://example.com/post/" + data.id
title=data.title
content=data.body
created=data.created_at
last_modified=data.updated_at
Traitement des nombres
url="https://example.com/product/" + data.id
title=data.name
content=data.description
price=data.price as Float
stock=data.stock_quantity as Integer
Informations de reference
Apercu des connecteurs DataStore - Apercu des connecteurs Data Store
Connecteur CSV - Connecteur CSV
Connecteur base de donnees - Connecteur de base de donnees
Présentation - Guide de configuration Data Store