概述
本页面从组件视角介绍Fess的主要功能和架构。 Fess采用模块化设计,以便于构建搜索系统。
整体架构
Fess由以下主要组件构成:
主要组件
1. 爬虫子系统
爬虫子系统负责从各种数据源收集文档。
主要类和功能:
Crawler
作用:爬取处理的核心类
主要功能:
从网站、文件系统和数据存储收集文档
基于爬取配置选择目标
爬取作业执行管理
爬取结果的会话管理
执行方式:
通过调度程序定期执行
从管理界面手动执行
命令行执行
WebCrawler
作用:网站爬取处理
主要功能:
HTML页面获取与解析
链接提取和跟踪
支持基于JavaScript的网站
支持需要身份验证的网站(BASIC/DIGEST/NTLM/FORM)
遵守robots.txt
FileCrawler
作用:文件系统爬取处理
主要功能:
遍历本地文件系统
网络驱动器(SMB/CIFS)访问
文件格式判定和合适解析器选择
基于权限的访问控制
DataStoreCrawler
作用:外部数据存储爬取处理
主要功能:
从数据库获取数据
云存储(Google Drive、Dropbox、Box等)集成
协作软件(Office 365、Slack、Confluence等)集成
通过插件实现可扩展性
CrawlConfig
作用:爬取配置管理
主要功能:
定义爬取目标URL或路径
限制爬取深度
设置爬取间隔
指定排除模式
分配标签
2. 索引子系统
索引子系统将收集的文档转换为可搜索的格式。
DocumentParser
作用:文档解析和文本提取
主要功能:
使用Apache Tika支持多种文件格式
元数据提取
字符编码自动检测
语言自动检测
Indexer
作用:在OpenSearch/Elasticsearch中注册索引
主要功能:
文档索引创建
通过批量索引提高速度
索引优化
删除旧文档
FieldMapper
作用:字段映射定义
主要功能:
文档字段定义
添加自定义字段
指定字段类型(text、keyword、date等)
多语言分析器配置
3. 搜索子系统
搜索子系统处理用户的搜索查询并返回结果。
SearchService
作用:搜索处理的核心
主要功能:
查询解析和优化
向OpenSearch/Elasticsearch执行查询
搜索结果排名
支持分面搜索
高亮显示
QueryProcessor
作用:搜索查询预处理
主要功能:
查询规范化
同义词扩展
停用词处理
查询纠正
SuggestService
作用:提供建议功能
主要功能:
生成输入自动完成候选
提供热门搜索关键词
使用自定义词典
RankingService
作用:调整搜索结果排名
主要功能:
文档提升
字段提升
自定义评分
相关性调整
4. 管理子系统
管理子系统管理Fess的配置和运营。
AdminConsole
作用:基于Web的管理界面
主要功能:
爬取配置管理
调度程序设置
用户和角色管理
系统设置
日志查看
Scheduler
作用:作业调度管理
主要功能:
定期执行爬取作业
定期执行索引优化
日志轮换
使用Cron表达式设置调度
BackupManager
作用:备份和恢复
主要功能:
配置数据备份
索引快照
恢复功能
自动备份调度
5. 认证和授权子系统
认证和授权子系统管理安全性和访问控制。
AuthenticationManager
作用:用户认证管理
主要功能:
本地认证
LDAP/Active Directory集成
SAML集成
OpenID Connect集成
基于角色的访问控制(RBAC)
RoleManager
作用:角色和访问权限管理
主要功能:
角色定义
角色分配给用户
文档级别访问控制
搜索结果过滤
6. API层
API层提供与外部系统的集成。
SearchAPI
作用:提供搜索API
主要功能:
通过REST API进行搜索
JSON格式响应
OpenSearch兼容
GSA(Google Search Appliance)兼容API
AdminAPI
作用:提供管理API
主要功能:
爬取配置的CRUD操作
索引管理
调度程序控制
获取系统信息
7. 数据存储
数据存储负责Fess的数据持久化。
ConfigStore
作用:配置数据存储
主要功能:
爬取配置持久化
系统配置存储
用户和角色信息管理
使用H2数据库或外部DB
SearchEngine
作用:与搜索引擎集成
主要功能:
与OpenSearch/Elasticsearch通信
索引管理
查询执行
集群支持
插件架构
Fess可以通过插件进行扩展。
DataStore插件
作用:连接到外部数据源
提供的插件:
Atlassian(Confluence/Jira)
Box
CSV
Database
Dropbox
Git/GitBucket
Google Drive
Office 365
S3
Slack
其他
Theme插件
作用:自定义搜索界面
提供的插件:
Simple Theme
Classic Theme
Ingester插件
作用:索引数据的预处理和后处理
提供的插件:
Logger
NDJSON
Script插件
作用:通过脚本进行自定义
提供的插件:
Groovy
OGNL
配置管理
FessConfig
作用:系统配置的统一管理
主要配置项:
系统通用设置
爬取设置
搜索设置
认证设置
通知设置
性能设置
DynamicProperties
作用:动态配置管理
主要功能:
运行时配置变更
环境变量使用
配置文件特定配置
总结
Fess通过这些组件的协作实现了强大的全文搜索系统。 每个组件采用松耦合设计,可根据需要进行自定义或扩展。
更详细的开发者信息请参考: