Cette page explique l’architecture de Fess, la structure du code, et les principaux composants. En comprenant la structure interne de Fess, vous pouvez développer efficacement.
Architecture globale
Fess est composé des principaux composants suivants :
Description des couches
Couche interface utilisateur
C’est l’écran que les utilisateurs manipulent directement. Implémenté en JSP, HTML et JavaScript.
Écran de recherche : Interface de recherche pour les utilisateurs finaux
Écran d’administration : Interface de configuration et de gestion pour les administrateurs système
Couche application Web
Couche d’application Web utilisant le framework LastaFlute.
Action : Traite les requêtes HTTP et appelle la logique métier
Form : Réception et validation des paramètres de requête
Service : Implémentation de la logique métier
Couche logique métier
Couche qui implémente les fonctionnalités principales de Fess.
Crawler : Collecte de données depuis des sites Web et des systèmes de fichiers
Job : Tâches exécutées selon un calendrier
Helper : Classes d’aide utilisées dans toute l’application
Couche d’accès aux données
Couche d’accès à OpenSearch utilisant DBFlute.
Behavior : Interface de manipulation de données
Entity : Entité de données
Query : Construction de requêtes de recherche
Couche stockage de données
Utilise OpenSearch 3.5.0 comme moteur de recherche.
Structure du projet
Structure des répertoires
Détails des principaux packages
Package app
Code de la couche application Web.
Package app.web
Implémente l’écran de recherche et les fonctionnalités pour les utilisateurs finaux.
Classes principales :
SearchAction.java: Traitement de rechercheLoginAction.java: Traitement de connexion
Exemple :
Package app.web.admin
Implémente les fonctionnalités de l’écran d’administration.
Classes principales :
AdminWebconfigAction.java: Configuration du crawl WebAdminSchedulerAction.java: Gestion du planificateurAdminUserAction.java: Gestion des utilisateurs
Convention de nommage :
Préfixe
Admin: Action pour l’administrationSuffixe
Action: Classe ActionSuffixe
Form: Classe Form
Package app.service
Couche service qui implémente la logique métier.
Classes principales :
SearchLogService.java: Service de rechercheUserService.java: Service de gestion des utilisateursScheduledJobService.java: Service de gestion des jobs
Exemple :
Package crawler
Implémente la fonctionnalité de collecte de données.
Package crawler (bibliothèque fess-crawler)
Classes principales :
CrawlerClient.java: Interface du client crawlerHcHttpClient.java: Client HTTPFileSystemClient.java: Client du système de fichiersExtractorFactory.java: Fabrique d’extracteursTikaExtractor.java: Extraction utilisant Apache TikaTransformer.java: Interface de transformation
Package crawler (fess main)
Classes principales :
FessStandardTransformer.java: Transformeur standard FessFessXpathTransformer.java: Transformeur XPath Fess
Package opensearch
Implémente l’intégration avec OpenSearch.
Package opensearch.client
Implémentation du client OpenSearch.
Classes principales :
SearchEngineClient.java: Client OpenSearch
Package opensearch.query
Implémente la construction de requêtes de recherche.
Classes principales :
QueryCommand.java: Commande de requêteQueryProcessor.java: Traitement de requêtes
Package helper
Classes d’aide utilisées dans toute l’application.
Classes principales :
SystemHelper.java: Aide système globaleCrawlingConfigHelper.java: Aide à la configuration du crawlSearchLogHelper.java: Aide aux journaux de rechercheUserInfoHelper.java: Aide aux informations utilisateurViewHelper.java: Aide relative à la vueQueryHelper.java: Aide à la construction de requêtes
Exemple :
Package job
Implémente les jobs exécutés selon un calendrier.
Classes principales :
CrawlJob.java: Job de crawlSuggestJob.java: Job de suggestionScriptExecutorJob.java: Job d’exécution de script
Exemple :
Package entity
Classes d’entités correspondant aux documents OpenSearch. Ce package est auto-généré par DBFlute.
Classes principales :
SearchLog.java: Journal de rechercheClickLog.java: Journal de clicsFavoriteLog.java: Journal de favorisUser.java: Informations utilisateurRole.java: Informations de rôle
Note
Le code du package entity est auto-généré, ne le modifiez pas directement. Mettez à jour en modifiant le schéma et en régénérant.
Package mylasta
Configuration et personnalisation de LastaFlute.
Package mylasta.action
Définit les classes de base Action.
FessUserBean.java: Informations utilisateurFessHtmlPath.java: Définition des chemins HTML
Package mylasta.direction
Configure l’application globale.
FessConfig.java: Chargement de la configurationFessFwAssistantDirector.java: Configuration du framework
Modèles de conception et modèles d’implémentation
Fess utilise les modèles de conception suivants.
Modèle MVC
Implémenté selon le modèle MVC par LastaFlute.
Model : Service, Entity
View : JSP
Controller : Action
Exemple :
Modèle DI
Utilise le conteneur DI de LastaFlute.
Modèle Factory
Utilisé pour la génération de divers composants.
Modèle Strategy
Utilisé dans le crawler et le transformer.
Gestion de la configuration
La configuration de Fess est gérée dans plusieurs fichiers.
fess_config.properties
Définit la configuration principale de l’application.
fess_config.xml
LastaDi component configuration file.
fess_message_*.properties
Fichiers de messages pour le support multilingue.
fess_message_ja.properties: Japonaisfess_message_en.properties: Anglais
Flux de données
Flux de recherche
Flux de crawl
Points d’extension
Fess peut être étendu aux points suivants.
Ajout d’un crawler personnalisé
Vous pouvez prendre en charge vos propres sources de données en implémentant l’interface CrawlerClient.
Ajout d’un transformer personnalisé
Vous pouvez ajouter votre propre traitement de transformation de données en implémentant Transformer.
Ajout d’un extracteur personnalisé
Vous pouvez ajouter votre propre traitement d’extraction de contenu en implémentant Extractor.
Ajout d’un plugin personnalisé
Vous pouvez gérer les plugins via l’interface d’administration UI de gestion des plugins.
Ressources de référence
Frameworks
Documentation technique
Étapes suivantes
Après avoir compris l’architecture, consultez la documentation suivante :
Flux de travail de développement - Flux de développement réel
Compilation et tests - Compilation et tests
Guide de contribution - Création de pull requests