Fess架构与主要功能

概述

本页面从组件视角介绍Fess的主要功能和架构。 Fess采用模块化设计,以便于构建搜索系统。

整体架构

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通过这些组件的协作实现了强大的全文搜索系统。 每个组件采用松耦合设计,可根据需要进行自定义或扩展。

更详细的开发者信息请参考: