Diese Seite erklärt die Architektur, Codestruktur und Hauptkomponenten von Fess. Durch das Verständnis der internen Struktur von Fess können Sie effizient entwickeln.
Gesamtarchitektur
Fess besteht aus folgenden Hauptkomponenten:
Beschreibung der Schichten
Benutzerschnittstellenschicht
Dies ist die Oberfläche, die Benutzer direkt bedienen. Sie ist mit JSP, HTML und JavaScript implementiert.
Suchseite: Suchoberfläche für Endbenutzer
Verwaltungsseite: Konfigurations- und Verwaltungsoberfläche für Systemadministratoren
Webanwendungsschicht
Dies ist die Webanwendungsschicht, die das LastaFlute-Framework verwendet.
Action: Verarbeitet HTTP-Anfragen und ruft Geschäftslogik auf
Form: Empfang von Anfrageparametern und Validierung
Service: Implementierung der Geschäftslogik
Geschäftslogikschicht
Dies ist die Schicht, die die Hauptfunktionen von Fess implementiert.
Crawler: Sammelt Daten von Websites und Dateisystemen
Job: Geplant ausgeführte Aufgaben
Helper: In der gesamten Anwendung verwendete Hilfsklassen
Datenzugriffsschicht
Dies ist die Zugriffsschicht auf OpenSearch mit DBFlute.
Behavior: Schnittstelle für Datenoperationen
Entity: Datenentität
Query: Aufbau von Suchabfragen
Datenspeicherschicht
Verwendet OpenSearch 3.5.0 als Suchmaschine.
Projektstruktur
Verzeichnisstruktur
Details zu Hauptpaketen
app-Paket
Code der Webanwendungsschicht.
app.web-Paket
Implementiert Suchseite und Endbenutzerfunktionen.
Hauptklassen:
SearchAction.java: SuchverarbeitungLoginAction.java: Login-Verarbeitung
Beispiel:
app.web.admin-Paket
Implementiert Funktionen der Verwaltungsseite.
Hauptklassen:
AdminWebconfigAction.java: Web-Crawl-KonfigurationAdminSchedulerAction.java: Scheduler-VerwaltungAdminUserAction.java: Benutzerverwaltung
Namenskonventionen:
Admin-Präfix: Admin-ActionAction-Suffix: Action-KlasseForm-Suffix: Form-Klasse
app.service-Paket
Service-Schicht, die Geschäftslogik implementiert.
Hauptklassen:
SearchLogService.java: SuchprotokolldienstUserService.java: BenutzerverwaltungsdienstScheduledJobService.java: Job-Verwaltungsdienst
Beispiel:
crawler-Paket (fess-crawler-Bibliothek)
Implementiert Datensammlungsfunktionen.
Hauptklassen:
CrawlerClient.java: Basisklasse für Crawler-ClientHcHttpClient.java: HTTP-Crawling-ClientFileSystemClient.java: Crawlen von DateisystemenExtractorFactory.java: Extractor-FactoryTikaExtractor.java: Extraktion mit Apache TikaTransformer.java: Schnittstelle für Transformationsverarbeitung
crawler-Paket (fess main)
Crawler-Integration in der Fess-Hauptanwendung.
Hauptklassen:
FessStandardTransformer.java: Standard-TransformationsverarbeitungFessXpathTransformer.java: XPath-basierte Transformationsverarbeitung
opensearch-Paket
Implementiert Integration mit OpenSearch.
opensearch.client-Paket
Implementierung des OpenSearch-Clients.
Hauptklassen:
SearchEngineClient.java: OpenSearch-Client
opensearch.query-Paket
Implementiert Aufbau von Suchabfragen.
Hauptklassen:
QueryCommand.java: AbfragebefehlQueryProcessor.java: Abfrageverarbeitung
helper-Paket
In der gesamten Anwendung verwendete Hilfsklassen.
Hauptklassen:
SystemHelper.java: Systemweites HilfsprogrammCrawlingConfigHelper.java: Hilfsprogramm für Crawl-KonfigurationSearchLogHelper.java: Hilfsprogramm für SuchprotokolleUserInfoHelper.java: Hilfsprogramm für BenutzerinformationenViewHelper.java: Hilfsprogramm für AnsichtenQueryHelper.java: Hilfsprogramm für Abfrage-Aufbau
Beispiel:
job-Paket
Implementiert geplant ausgeführte Jobs.
Hauptklassen:
CrawlJob.java: Crawl-JobSuggestJob.java: Suggest-JobScriptExecutorJob.java: Skriptausführungs-Job
Beispiel:
entity-Paket
Entitätsklassen, die OpenSearch-Dokumenten entsprechen. Dieses Paket wird automatisch von DBFlute generiert.
Hauptklassen:
SearchLog.java: SuchprotokollClickLog.java: KlickprotokollFavoriteLog.java: FavoritenprotokollUser.java: BenutzerinformationenRole.java: Rolleninformationen
Bemerkung
Der Code im entity-Paket wird automatisch generiert, bearbeiten Sie ihn daher nicht direkt. Aktualisieren Sie durch Ändern des Schemas und Neugenerierung.
mylasta-Paket
Führt Konfiguration und Anpassung von LastaFlute durch.
mylasta.action-Paket
Definiert Basisklassen für Actions.
FessUserBean.java: BenutzerinformationenFessHtmlPath.java: HTML-Pfaddefinition
mylasta.direction-Paket
Führt anwendungsweite Konfiguration durch.
FessConfig.java: Laden der KonfigurationFessFwAssistantDirector.java: Framework-Konfiguration
Entwurfsmuster und Implementierungsmuster
In Fess werden folgende Entwurfsmuster verwendet.
MVC-Muster
Mit LastaFlute im MVC-Muster implementiert.
Model: Service, Entity
View: JSP
Controller: Action
Beispiel:
DI-Muster
Verwendet den DI-Container von LastaFlute.
Factory-Muster
Wird zur Erzeugung verschiedener Komponenten verwendet.
Strategy-Muster
Wird in Crawlern und Transformern verwendet.
Konfigurationsverwaltung
Die Konfiguration von Fess wird in mehreren Dateien verwaltet.
fess_config.properties
Definiert Hauptkonfiguration der Anwendung.
fess_config.xml
LastaDi-Komponentenkonfigurationsdatei.
fess_message_*.properties
Nachrichtendateien für mehrsprachige Unterstützung.
fess_message_ja.properties: Japanischfess_message_en.properties: Englisch
Datenfluss
Suchablauf
Crawl-Ablauf
Erweiterungspunkte
Fess kann an folgenden Punkten erweitert werden.
Hinzufügen benutzerdefinierter Crawler
Durch Implementieren der CrawlerClient interface können Sie benutzerdefinierte Datenquellen unterstützen.
Hinzufügen benutzerdefinierter Transformer
Durch Implementieren von Transformer können Sie benutzerdefinierte Datentransformationsverarbeitung hinzufügen.
Hinzufügen benutzerdefinierter Extractoren
Durch Implementieren von Extractor können Sie benutzerdefinierte Inhaltsextraktionsverarbeitung hinzufügen.
Hinzufügen benutzerdefinierter Plugins
Plugins können über die Admin-UI-Plugin-Verwaltungsseite verwaltet werden.
Referenzmaterialien
Frameworks
Technische Dokumentation
Nächste Schritte
Nachdem Sie die Architektur verstanden haben, lesen Sie folgende Dokumentation:
Entwicklungsworkflow - Tatsächlicher Entwicklungsablauf
Bauen und Testen - Build und Test
Leitfaden für Beiträge - Erstellen von Pull Requests