Fess
15.3
Documentation
Download
Forum
GitHub
简体中文
English
日本語
Deutsch
Español
Français
简体中文
Support
Menu
Documentation
Forum
GitHub
简体中文
English
日本語
Deutsch
Español
Français
简体中文
总览
入门
文档
教程
开发
开发者指南
GitHub
Docker
JavaDoc
XRef
I/F Doc
路线图
变更点
问题跟踪
其他
归档文档
Support
开发
Home
开发
开发者指南
目标读者
必备前置知识
开发指南的构成
快速入门
开发环境的选项
本地开发环境
使用 Docker 的开发环境
常见问题
Q: 开发所需的最低配置是?
Q: 应该使用哪个 IDE?
Q: LastaFlute 或 DBFlute 的知识是必需的吗?
Q: 第一次贡献应该从什么开始?
相关资源
官方资源
技术文档
社区
下一步
开源全文检索服务器 - Fess 开发概述
概述
Fess 的特点
技术栈
目标版本
主要技术和框架
Java 21
LastaFlute
DBFlute
OpenSearch
Maven
开发工具
推荐的开发环境
Eclipse
IntelliJ IDEA
VS Code
版本管理
必要知识
基础知识
学习资源
官方文档
社区
源代码
开发的基本流程
项目结构概述
主要包
app
crawler
es
helper
job
开发环境的快速入门
前提条件
步骤
开发提示
调试运行
热部署
确认日志
OpenSearch 的操作
社区和支持
问题和咨询
贡献方法
下一步
参考资料
官方资源
技术文档
社区
开发环境设置
系统要求
硬件要求
软件要求
必需软件的安装
Java 的安装
Eclipse Temurin 的安装(推荐)
安装确认
环境变量的设置
Maven 的安装
下载和安装
环境变量的设置
安装确认
Git 的安装
IDE 的设置
Eclipse 的情况
Eclipse 的安装
推荐插件
项目的导入
运行配置的设置
IntelliJ IDEA 的情况
IntelliJ IDEA 的安装
项目的导入
运行配置的设置
VS Code 的情况
VS Code 的安装
必要扩展的安装
打开项目
源代码的获取
从 GitHub 克隆
项目的构建
OpenSearch 插件的下载
首次构建
Fess 的运行
从命令行运行
从 IDE 运行
Eclipse 的情况
IntelliJ IDEA 的情况
VS Code 的情况
启动确认
端口号的更改
调试运行
在 IDE 中调试运行
Eclipse 的情况
IntelliJ IDEA 的情况
VS Code 的情况
远程调试
开发有用的设置
日志级别的更改
启用热部署
内置 OpenSearch 的操作
使用外部 OpenSearch
通过 DBFlute 生成代码
模式更改后的重新生成
故障排除
构建错误
运行错误
IDE 无法识别项目
下一步
资源
架构和代码结构
整体架构
层的说明
用户界面层
Web 应用层
业务逻辑层
数据访问层
数据存储层
项目结构
目录结构
主要包的详情
app 包
app.web 包
app.web.admin 包
app.service 包
crawler 包
crawler.client 包
crawler.extractor 包
crawler.transformer 包
es 包
es.client 包
es.query 包
helper 包
job 包
entity 包
mylasta 包
mylasta.action 包
mylasta.direction 包
设计模式和实现模式
MVC 模式
DI 模式
Factory 模式
Strategy 模式
配置管理
fess_config.properties
fess_config.xml
fess_message_*.properties
数据流
搜索流程
爬取流程
扩展点
添加自定义爬虫
添加自定义转换器
添加自定义提取器
添加自定义插件
参考资料
框架
技术文档
下一步
开发工作流程
基本开发流程
Step 1: 确认・创建 Issue
确认现有 Issue
创建新 Issue
Issue 模板
Step 2: 创建分支
分支命名规则
创建分支的步骤
Step 3: 编码
编码规范
基本风格
命名规则
注释
null 的处理
异常处理
日志输出
开发中的测试
本地运行
调试运行
单元测试的执行
Step 4: 执行本地测试
单元测试的执行
集成测试的执行
代码风格检查
执行所有检查
Step 5: 提交
提交消息的规范
提交步骤
提交粒度
Step 6: 推送
Step 7: 创建拉取请求
PR 的创建步骤
PR 模板
PR 的描述
Step 8: 代码审查
审查要点
审查意见的例子
Step 9: 回应审查反馈
回应反馈的步骤
对意见的回复
Step 10: 合并
合并后的处理
常见开发场景
功能添加
修复错误
重构
更新文档
开发提示
高效开发
问题解决
下一步
参考资料
构建和测试
构建系统概述
pom.xml
基本构建命令
清理构建
创建包
完整构建
下载依赖
下载 OpenSearch 插件
测试
单元测试的执行
执行所有单元测试
执行特定的测试类
执行特定的测试方法
执行多个测试类
跳过测试
集成测试的执行
测试的编写
单元测试的创建
测试类的放置
测试类的基本结构
测试的生命周期
断言
使用 Mock
测试覆盖率
代码质量检查
Checkstyle
SpotBugs
PMD
执行所有检查
创建发布包
创建发布包
创建 Docker 镜像
配置文件
开发配置文件
生产配置文件
快速构建
CI/CD
GitHub Actions
本地 CI 检查
故障排除
构建错误
测试错误
依赖问题
构建的最佳实践
定期清理构建
测试的执行
代码质量检查
依赖更新
利用构建缓存
Maven 命令参考
常用命令
下一步
参考资料
贡献指南
开始
贡献方法
代码贡献
文档贡献
Issue 报告
社区活动
首次贡献
Step 1: 理解项目
Step 2: 查找 Issue
Step 3: 设置开发环境
Step 4: 创建分支并开始工作
Step 5: 创建拉取请求
编码规范
Java编码风格
基本风格
命名规则
注释
类和方法的设计
异常处理
null 的处理
测试的编写
代码审查指南
拉取请求的审查流程
审查要点
对审查意见的回应
拉取请求的最佳实践
PR 的大小
PR 的标题
PR 的描述
提交消息
Draft PR 的活用
社区指南
行为准则
沟通
感谢的表达
常见问题
Q: 初学者也可以贡献吗?
Q: 拉取请求大约多久会被审查?
Q: 如果拉取请求被拒绝了怎么办?
Q: 如果违反了编码规范怎么办?
Q: 如果想添加大功能怎么办?
Q: 可以用日语提问吗?
贡献类型别指南
文档改进
错误报告
功能请求
代码审查
许可证
致谢
下一步
参考资料
社区资源
GitHub
Docker
JavaDoc
XRef
I/F Doc
路线图
版本命名策略
15.0
变更点
问题跟踪