Aperçu
Le connecteur de base de données fournit une fonctionnalité pour récupérer des données depuis des bases de données relationnelles compatibles JDBC et les enregistrer dans l’index de Fess.
Cette fonctionnalité nécessite le plugin fess-ds-db.
Bases de données prises en charge
Toutes les bases de données compatibles JDBC sont prises en charge. Exemples principaux :
MySQL / MariaDB
PostgreSQL
Oracle Database
Microsoft SQL Server
SQLite
H2 Database
Prérequis
L’installation du plugin
fess-ds-dbest nécessaireUn pilote JDBC adapté à la base de données cible est requis
Un accès en lecture à la base de données est requis
Pour les grands volumes de données, une conception de requête appropriée est importante
Installation du plugin
Méthode 1 : Déposer le fichier JAR directement
Méthode 2 : Installer depuis l’interface d’administration
Ouvrir « Système » → « Plugins »
Téléverser le fichier JAR
Redémarrer Fess
Installation du pilote JDBC
Placez le pilote JDBC adapté à la base de données cible dans le répertoire app/WEB-INF/lib/ du classpath de Fess :
Une fois le pilote JDBC déposé, redémarrez Fess pour le charger.
Méthode de configuration
Configurez depuis l’interface d’administration : « Crawler » → « DataStore » → « Nouveau ».
Configuration de base
| Élément | Exemple de configuration |
|---|---|
| Nom | Products Database |
| Nom du handler | DatabaseDataStore |
| Actif | Oui |
Configuration des paramètres
Exemple MySQL/MariaDB :
Exemple PostgreSQL :
Liste des paramètres
| Paramètre | Requis | Description |
|---|---|---|
driver | Oui | Nom de classe du pilote JDBC (si absent, une DataStoreException est levée) |
url | Oui | URL de connexion JDBC (obligatoire pour la connexion) |
sql | Oui | Requête SQL pour la récupération des données (si absente, une DataStoreException est levée) |
username | Non | Nom d’utilisateur de la base de données |
password | Non | Mot de passe de la base de données |
fetch_size | Non | Taille de fetch JDBC. Pour le streaming de résultats MySQL, spécifiez MIN_VALUE |
default_mimetype | Non | Type MIME par défaut utilisé lors de l’extraction du contenu des colonnes BLOB/binaires |
column_label.mimetype | Non | Nom de la colonne contenant le type MIME à utiliser pour l’extraction d’une colonne BLOB/binaire (ex. : column_label.mimetype=content_type) |
column_label.filename | Non | Nom de la colonne contenant le nom de fichier à utiliser pour l’extraction d’une colonne BLOB/binaire (le type MIME est déduit de l’extension) |
info.* | Non | Propriétés de connexion JDBC supplémentaires (ex. : info.ssl=true). La clé sans le préfixe info. est transmise au pilote JDBC |
readInterval | Non | Délai en millisecondes entre le traitement de chaque ligne. Par défaut : 0 |
script_type | Non | Type du moteur de script. Par défaut : groovy |
Configuration du script
Mappez les noms de colonnes SQL vers les champs d’index :
Champs disponibles :
<column_name>- Colonnes du résultat de la requête SQL (accès direct par le nom de colonne. Aucun préfixe tel quedata.n’est ajouté)
Note
Le nom de colonne doit correspondre au libellé de colonne (alias) de la clause SELECT. Pour les fonctions d’agrégation ou les expressions, utilisez explicitement AS pour définir un alias (ex. : COUNT(*) AS total).
Chargement de données BLOB/binaires
Les colonnes de type BLOB, CLOB, NCLOB, tableau d’octets ou flux binaire sont automatiquement soumises au traitement d’extraction de contenu (le même extracteur que pour le crawl de fichiers) et intégrées sous forme de texte. Les colonnes de type tableau sont converties en chaîne séparée par des espaces. Les valeurs NULL deviennent des chaînes vides.
Pour extraire correctement du texte depuis des BLOB ou des flux binaires, il est nécessaire de déterminer le type de données (type MIME). La priorité de détermination est la suivante :
column_label.mimetype=<nom_de_colonne>- Utilise la valeur de la colonne spécifiée comme type MIMEcolumn_label.filename=<nom_de_colonne>- Traite la valeur de la colonne spécifiée comme un nom de fichier et déduit le type MIME à partir de l’extensiondefault_mimetype- Type MIME par défaut utilisé si aucune des méthodes ci-dessus ne permet de déterminer le type
Exemple (extraction du BLOB de la colonne file_data en utilisant le type MIME de la colonne content_type) :
Conception des requêtes SQL
Requêtes efficaces
Pour les grands volumes de données, les performances de requête sont importantes. La requête SQL est envoyée telle quelle à la base de données (aucune liaison de paramètres n’est effectuée) :
Exploration incrémentale
Méthode pour récupérer uniquement les enregistrements mis à jour :
Génération d’URL
L’URL du document est générée par le script :
Prise en charge des caractères multi-octets
Pour traiter des données contenant des caractères multi-octets tels que le japonais :
MySQL
PostgreSQL
PostgreSQL utilise généralement UTF-8 par défaut. Si nécessaire :
Sécurité
Protection des identifiants de base de données
Avertissement
Écrire les mots de passe directement dans les fichiers de configuration présente un risque de sécurité.
Méthodes recommandées :
Utiliser des variables d’environnement
Utiliser la fonctionnalité de chiffrement de Fess
Utiliser un utilisateur en lecture seule
Principe du moindre privilège
Accordez uniquement les privilèges minimum nécessaires à l’utilisateur de la base de données :
Exemples d’utilisation
Recherche de catalogue de produits
Paramètres :
Script :
Articles de base de connaissances
Paramètres :
Script :
Dépannage
Pilote JDBC introuvable
Symptôme : ClassNotFoundException ou No suitable driver
Solution :
Vérifiez que le pilote JDBC est placé dans
lib/Vérifiez que le nom de classe du pilote est correct
Redémarrez Fess
Erreur de connexion
Symptôme : Connection refused ou erreur d’authentification
Points à vérifier :
La base de données est-elle démarrée ?
Le nom d’hôte et le numéro de port sont-ils corrects ?
Le nom d’utilisateur et le mot de passe sont-ils corrects ?
Configuration du pare-feu
Erreur de requête
Symptôme : SQLException ou erreur de syntaxe SQL
Points à vérifier :
Testez la requête SQL directement sur la base de données
Vérifiez que les noms de colonnes sont corrects
Vérifiez que les noms de tables sont corrects
Informations de référence
Apercu des connecteurs DataStore - Aperçu des connecteurs DataStore
Connecteur CSV - Connecteur CSV
Connecteur JSON - Connecteur JSON
Présentation - Guide de configuration DataStore