Esta página explica la arquitectura, estructura del código, y componentes principales de Fess. Al comprender la estructura interna de Fess, puede proceder con el desarrollo de manera eficiente.
Arquitectura General
Fess se compone de los siguientes componentes principales:
Descripción de Capas
Capa de Interfaz de Usuario
Esta es la pantalla que los usuarios operan directamente. Está implementada con JSP, HTML y JavaScript.
Pantalla de búsqueda: Interfaz de búsqueda para usuarios finales
Pantalla de administración: Interfaz de configuración y administración para administradores del sistema
Capa de Aplicación Web
Esta es la capa de aplicación web que usa el framework LastaFlute.
Action: Procesa solicitudes HTTP y llama a lógica de negocio
Form: Recepción de parámetros de solicitud y validación
Service: Implementación de lógica de negocio
Capa de Lógica de Negocio
Esta es la capa que implementa las funciones principales de Fess.
Crawler: Recopila datos de sitios web, sistemas de archivos, etc.
Job: Tareas ejecutadas según programación
Helper: Clases helper usadas en toda la aplicación
Capa de Acceso a Datos
Esta es la capa de acceso a OpenSearch usando DBFlute.
Behavior: Interfaz de operación de datos
Entity: Entidad de datos
Query: Construcción de consultas de búsqueda
Capa de Almacén de Datos
Usa OpenSearch 3.5.0 como motor de búsqueda.
Estructura del Proyecto
Estructura de Directorios
Detalles de Paquetes Principales
Paquete app
Este es el código de la capa de aplicación web.
Paquete app.web
Implementa la pantalla de búsqueda y funciones para usuarios finales.
Clases principales:
SearchAction.java: Procesamiento de búsquedaLoginAction.java: Procesamiento de inicio de sesión
Ejemplo:
Paquete app.web.admin
Implementa funciones de la pantalla de administración.
Clases principales:
AdminWebconfigAction.java: Configuración de rastreo webAdminSchedulerAction.java: Gestión de programadorAdminUserAction.java: Gestión de usuarios
Convenciones de nomenclatura:
Prefijo
Admin: Action para administraciónSufijo
Action: Clase ActionSufijo
Form: Clase Form
Paquete app.service
Esta es la capa de servicio que implementa la lógica de negocio.
Clases principales:
SearchLogService.java: Servicio de registro de búsquedaUserService.java: Servicio de gestión de usuariosScheduledJobService.java: Servicio de gestión de jobs
Ejemplo:
Paquete crawler (biblioteca fess-crawler)
Implementa funcionalidad de recopilación de datos.
Clases principales:
CrawlerClient.java: Clase base de cliente de crawlerHcHttpClient.java: Cliente de rastreo HTTPFileSystemClient.java: Rastreo de sistema de archivosExtractorFactory.java: Fábrica de extractoresTikaExtractor.java: Extracción usando Apache TikaTransformer.java: Interfaz de procesamiento de transformación
Paquete crawler (fess main)
Integración del crawler en la aplicación principal de Fess.
Clases principales:
FessStandardTransformer.java: Procesamiento de transformación estándarFessXpathTransformer.java: Procesamiento de transformación basado en XPath
Paquete opensearch
Implementa integración con OpenSearch.
Paquete opensearch.client
Esta es la implementación del cliente de OpenSearch.
Clases principales:
SearchEngineClient.java: Cliente de OpenSearch
Paquete opensearch.query
Implementa construcción de consultas de búsqueda.
Clases principales:
QueryCommand.java: Comando de consultaQueryProcessor.java: Procesamiento de consultas
Paquete helper
Estas son clases helper usadas en toda la aplicación.
Clases principales:
SystemHelper.java: Helper de todo el sistemaCrawlingConfigHelper.java: Helper de configuración de rastreoSearchLogHelper.java: Helper de registro de búsquedaUserInfoHelper.java: Helper de información de usuarioViewHelper.java: Helper relacionado con vistaQueryHelper.java: Helper de construcción de consultas
Ejemplo:
Paquete job
Implementa jobs ejecutados según programación.
Clases principales:
CrawlJob.java: Job de rastreoSuggestJob.java: Job de sugerenciasScriptExecutorJob.java: Job de ejecución de scripts
Ejemplo:
Paquete entity
Estas son clases entity correspondientes a documentos de OpenSearch. Este paquete es generado automáticamente por DBFlute.
Clases principales:
SearchLog.java: Registro de búsquedaClickLog.java: Registro de clicsFavoriteLog.java: Registro de favoritosUser.java: Información de usuarioRole.java: Información de rol
Nota
No edite directamente el código del paquete entity. Se actualiza regenerándolo después de cambiar el esquema.
Paquete mylasta
Realiza configuración y personalización de LastaFlute.
Paquete mylasta.action
Define clases base de Action.
FessUserBean.java: Información de usuarioFessHtmlPath.java: Definición de ruta HTML
Paquete mylasta.direction
Realiza configuración de toda la aplicación.
FessConfig.java: Lectura de configuraciónFessFwAssistantDirector.java: Configuración de framework
Patrones de Diseño y Patrones de Implementación
En Fess, se usan los siguientes patrones de diseño.
Patrón MVC
Está implementado con patrón MVC de LastaFlute.
Model: Service, Entity
View: JSP
Controller: Action
Ejemplo:
Patrón DI
Usa el contenedor DI de LastaFlute.
Patrón Factory
Se usa para generar diversos componentes.
Patrón Strategy
Se usa en crawlers y transformers.
Gestión de Configuración
La configuración de Fess se gestiona en múltiples archivos.
fess_config.properties
Define la configuración principal de la aplicación.
fess_config.xml
Archivo de configuración de componentes LastaDi.
fess_message_*.properties
Estos son archivos de mensajes para soporte multilingüe.
fess_message_ja.properties: Japonésfess_message_en.properties: Inglés
Flujo de Datos
Flujo de Búsqueda
Flujo de Rastreo
Puntos de Extensión
Fess se puede extender en los siguientes puntos.
Agregar Crawler Personalizado
Puede soportar fuentes de datos propias implementando la CrawlerClient interface.
Agregar Transformer Personalizado
Puede agregar procesamiento de transformación de datos propio implementando Transformer.
Agregar Extractor Personalizado
Puede agregar procesamiento de extracción de contenido propio implementando Extractor.
Agregar Plugin Personalizado
Los plugins se pueden gestionar a través de la pantalla de gestión de plugins en la UI de administración.
Materiales de Referencia
Frameworks
Documentación Técnica
Próximos Pasos
Una vez que comprenda la arquitectura, consulte los siguientes documentos:
Flujo de Trabajo de Desarrollo - Flujo de desarrollo real
Construcción y Pruebas - Construcción y pruebas
Guía de Contribución - Crear pull requests