Menu

Serveur de recherche plein texte open source - Aperçu du développement Fess

Cette page fournit une vue d’ensemble du développement Fess et des informations de base pour commencer le développement.

Aperçu

Fess est un serveur de recherche plein texte open source développé en Java. Il vise à faciliter la construction de recherches d’entreprise, et fournit de puissantes fonctionnalités de recherche et un écran d’administration facile à utiliser.

Caractéristiques de Fess

  • Configuration facile : Démarrage immédiat avec un environnement Java

  • Crawler puissant : Prise en charge de diverses sources de données telles que les sites Web, les systèmes de fichiers et les bases de données

  • Support japonais : Optimisé pour la recherche plein texte en japonais

  • Extensibilité : Extension de fonctionnalités possible via des plugins

  • API REST : Utilisation des fonctionnalités de recherche depuis d’autres applications

Pile technologique

Fess est développé en utilisant les technologies suivantes.

Version cible

Cette documentation cible les versions suivantes :

  • Fess : 15.3.0

  • Java : 21 ou supérieur

  • OpenSearch : 3.3.0

  • Maven : 3.x

Principales technologies et frameworks

Java 21

Fess est une application qui fonctionne avec Java 21 ou supérieur. Elle utilise les dernières fonctionnalités Java pour améliorer les performances et la maintenabilité.

  • Recommandé : Eclipse Temurin 21 (anciennement AdoptOpenJDK)

  • Version minimale : Java 21

LastaFlute

LastaFlute est le framework utilisé dans la couche application Web de Fess.

Principales fonctionnalités :

  • Conteneur DI (injection de dépendances)

  • Framework Web basé sur les actions

  • Validation

  • Gestion des messages

  • Gestion de la configuration

Ressources d’apprentissage :

DBFlute

DBFlute est un outil de mapping O/R pour l’accès aux bases de données. Fess l’utilise pour générer automatiquement du code Java à partir du schéma OpenSearch.

Principales fonctionnalités :

  • Constructeur SQL type-safe

  • Génération automatique de code à partir du schéma

  • Génération automatique de documentation de base de données

Ressources d’apprentissage :

OpenSearch

OpenSearch est le moteur de recherche et d’analyse distribué utilisé comme moteur de recherche de Fess.

Version prise en charge : OpenSearch 3.3.0

Plugins requis :

  • opensearch-analysis-fess : Plugin d’analyse morphologique dédié à Fess

  • opensearch-analysis-extension : Fonctionnalités d’analyse linguistique supplémentaires

  • opensearch-minhash : Détection de documents similaires

  • opensearch-configsync : Synchronisation de la configuration

Ressources d’apprentissage :

Maven

Maven est utilisé comme outil de compilation de Fess.

Principales utilisations :

  • Gestion des bibliothèques dépendantes

  • Exécution du processus de compilation

  • Exécution des tests

  • Création de packages

Outils de développement

Environnement de développement recommandé

Eclipse

La documentation officielle explique les méthodes de développement en utilisant Eclipse.

Version recommandée : Eclipse 2023-09 ou supérieur

Plugins nécessaires :

  • Maven Integration for Eclipse (m2e)

  • Eclipse Java Development Tools

IntelliJ IDEA

Le développement est également possible avec IntelliJ IDEA.

Édition recommandée : Community Edition ou Ultimate Edition

Fonctionnalités nécessaires :

  • Support Maven (inclus par défaut)

  • Support Java

VS Code

VS Code peut également être utilisé pour un développement léger.

Extensions nécessaires :

  • Java Extension Pack

  • Maven for Java

Gestion de version

  • Git : Gestion du code source

  • GitHub : Hébergement de dépôt, gestion des problèmes, pull requests

Connaissances nécessaires

Connaissances de base

Les connaissances suivantes sont nécessaires pour le développement de Fess :

Obligatoire

  • Programmation Java : Classes, interfaces, génériques, expressions lambda, etc.

  • Orienté objet : Héritage, polymorphisme, encapsulation

  • Maven : Commandes de base et compréhension de pom.xml

  • Git : clone, commit, push, pull, branch, merge, etc.

Recommandé

  • LastaFlute : Concepts d’Action, Form, Service

  • DBFlute : Utilisation de Behavior, ConditionBean

  • OpenSearch/Elasticsearch : Bases des index, mappings, requêtes

  • Développement Web : HTML, CSS, JavaScript (en particulier pour le développement frontend)

  • Commandes Linux : Développement et débogage dans un environnement serveur

Ressources d’apprentissage

Si vous abordez le développement de Fess pour la première fois, les ressources suivantes sont utiles :

Documentation officielle

Communauté

Code source

Lire le code réel est la méthode d’apprentissage la plus efficace :

  • Commencez par lire des petites fonctionnalités

  • Suivez le comportement du code avec le débogueur

  • Consultez le code de test existant

Flux de base du développement

Le développement de Fess se déroule généralement comme suit :

  1. Vérification/création d’un problème

    Vérifiez les problèmes GitHub et décidez sur quoi travailler. Pour une nouvelle fonctionnalité ou une correction de bug, créez un problème.

  2. Création d’une branche

    Créez une branche de travail :

    git checkout -b feature/my-new-feature
    
  3. Codage

    Implémentez la fonctionnalité ou corrigez le bug.

  4. Tests

    Créez et exécutez des tests unitaires pour vérifier que les modifications fonctionnent correctement.

  5. Commit

    Commitez les modifications :

    git add .
    git commit -m "Add new feature"
    
  6. Pull request

    Poussez vers GitHub et créez une pull request :

    git push origin feature/my-new-feature
    

Consultez Flux de travail de développement pour plus de détails.

Aperçu de la structure du projet

Le code source de Fess a la structure suivante :

fess/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── org/codelibs/fess/
│   │   │       ├── app/           # Couche application Web
│   │   │       │   ├── web/       # Écran de recherche
│   │   │       │   └── service/   # Couche service
│   │   │       ├── crawler/       # Fonctionnalité crawler
│   │   │       ├── es/            # Relatif à OpenSearch
│   │   │       ├── helper/        # Classes d'aide
│   │   │       ├── job/           # Traitement des jobs
│   │   │       ├── util/          # Utilitaires
│   │   │       └── FessBoot.java  # Classe de démarrage
│   │   ├── resources/
│   │   │   ├── fess_config.properties
│   │   │   ├── fess_config.xml
│   │   │   └── ...
│   │   └── webapp/
│   │       └── WEB-INF/
│   │           └── view/          # Fichiers JSP
│   └── test/
│       └── java/                  # Code de test
├── pom.xml                        # Fichier de configuration Maven
└── README.md

Principaux packages

app

Code de la couche application Web. Contient les Actions, Forms, Services de l’écran d’administration et de recherche, etc.

crawler

Code de fonctionnalité de collecte de données. Crawler Web, crawler de fichiers, crawler de magasin de données, etc.

es

Code d’intégration avec OpenSearch. Opérations sur les index, construction de requêtes de recherche, etc.

helper

Classes d’aide utilisées dans toute l’application.

job

Code des jobs exécutés selon un calendrier. Job de crawl, job d’optimisation d’index, etc.

Consultez Architecture et structure du code pour plus de détails.

Démarrage rapide de l’environnement de développement

Explique comment configurer l’environnement de développement avec les étapes minimales et exécuter Fess.

Prérequis

  • Java 21 ou supérieur installé

  • Git installé

  • Maven 3.x installé

Procédure

  1. Clonage du dépôt

    git clone https://github.com/codelibs/fess.git
    cd fess
    
  2. Téléchargement des plugins OpenSearch

    mvn antrun:run
    
  3. Exécution

    Exécutez depuis Maven :

    mvn compile exec:java
    

    Ou exécutez la classe org.codelibs.fess.FessBoot depuis l’IDE (Eclipse, IntelliJ IDEA, etc.).

  4. Accès

    Accédez aux URL suivantes dans le navigateur :

Consultez Configuration de l’environnement de développement pour la procédure de configuration détaillée.

Conseils de développement

Exécution en débogage

Pour exécuter en débogage dans l’IDE, exécutez la classe FessBoot. En définissant des points d’arrêt, vous pouvez suivre en détail le comportement du code.

Hot deploy

LastaFlute peut refléter certaines modifications sans redémarrage. Cependant, les modifications de structure de classe, etc. nécessitent un redémarrage.

Vérification des journaux

Les journaux sont enregistrés dans le répertoire target/fess/logs/. En cas de problème, vérifiez les fichiers journaux.

Manipulation d’OpenSearch

L’OpenSearch intégré est placé dans target/fess/es/. Il est également possible d’appeler directement l’API OpenSearch pour le débogage :

# Vérification des index
curl -X GET http://localhost:9201/_cat/indices?v

# Recherche de documents
curl -X GET http://localhost:9201/fess.search/_search?pretty

Communauté et support

Questions et consultations

Si vous avez des questions ou des consultations pendant le développement, utilisez les ressources suivantes :

Méthodes de contribution

Consultez Guide de contribution pour les méthodes de contribution à Fess.

Étapes suivantes

Si vous êtes prêt à configurer l’environnement de développement, passez à Configuration de l’environnement de développement.

Consultez également la documentation suivante pour des informations détaillées :

Ressources de référence

Ressources officielles

Documentation technique

Communauté