# Lucene Server 搜索引擎 **Repository Path**: jinjiG/lucene-server ## Basic Information - **Project Name**: Lucene Server 搜索引擎 - **Description**: Lucene Server 是基于 Spring Boot 和 Lucene 核心库构建的一款简单、灵活、性能强劲的搜索引擎。 Lucene Server通过配置,可零代码实现对海量数据的实时同步。为企业级应用提供实时的、高效的搜索引擎基础服务。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/jinjiG/lucene-server - **GVP Project**: No ## Statistics - **Stars**: 131 - **Forks**: 30 - **Created**: 2024-07-22 - **Last Updated**: 2025-06-09 ## Categories & Tags **Categories**: search-engine **Tags**: Lucene, 零代码, 全文检索, cdc, 搜索引擎 ## README # Lucene Server ## 介绍 Lucene Server 是基于 Spring Boot 和 Lucene 核心库构建的一款简单、灵活、性能强劲的搜索引擎。 Lucene Server通过配置,可 **零代码** 实现对海量数据的实时同步。为企业级应用提供实时的、高效的搜索引擎基础服务。 ## 关键特性 - 零代码实现:Lucene Server 采用配置优先的设计理念,允许用户通过简单的配置定义索引结构和搜索规则,从而避免了复杂的代码开发过程。 - 海量数据支持:利用 Lucene 的强大能力,Lucene Server 能够处理和搜索大规模数据集,无论是文档、产品目录还是用户评论,都能迅速响应查询请求。 - 高度可定制:虽然无需编写代码,但 Lucene Server 提供了丰富的配置选项,允许用户根据具体需求调整索引策略、搜索算法和结果排序,满足个性化业务场景。 - 易于集成与扩展:基于 Spring Boot 构建,Lucene Server 能够轻松地与现有的微服务架构融合,同时也支持通过插件机制添加新的功能模块,保证系统的灵活性和可扩展性。 - 强大的搜索语法:支持复杂的查询语法,包括布尔运算、短语匹配、模糊搜索和范围查询,使搜索更加精准和智能。 - 实时更新与高可用性:通过CDC(Change Data Capture ,数据变化捕获),Lucene Server 支持准实时数据更新,确保搜索结果的时效性。同时,通过集群部署和负载均衡,实现高可用和故障恢复,保障服务的稳定运行。 #### 开源不易,跪求star :star: :star: :star: :star: :star: :star: :star: 分割线 :star: :star: :star: :star: :star: :star: :star: 开源不易,跪求star ## 主要功能 - 全文检索服务: 基于Springboot和Lucene构建,提供类似于Elasticsearch的高效全文检索能力。 - Web管理界面: 内置直观的Web界面,支持数据源集成、任务调度、权限管理等配置,简化系统管理流程。 - 灵活的数据集成: 通过Web界面配置,轻松集成各类数据源,扩展性良好。 - 任务管理与监控: 实现任务调度与监控,确保数据处理和检索任务的顺利执行。系统各种任务的解释,[请参看Wiki](http://https://gitee.com/jinjiG/lucene-server/wikis/%E7%B3%BB%E7%BB%9F%E5%90%84%E7%A7%8D%E4%BB%BB%E5%8A%A1%E8%A7%A3%E9%87%8A) - 轻量级客户端API: 提供极简的Java客户端,仅包含两个文件,采用类似MyBatis-Plus的条件构造器模式,便于快速集成。支持索引库的增删改查、Count统计及Group聚合查询,满足多样化检索需求。支持客户端权限验证,保障数据安全与访问控制。客户端不引入额外第三方库,保证系统纯净度与稳定性。 - 简易集成与维护: 清晰的架构与接口设计,降低集成复杂度,简化日常维护工作。 **Lucene Server致力于提供一个高性能、易用且安全的全文检索解决方案,适用于多种应用场景。** ##### 开源不易,跪求star :star: :star: :star: :star: :star: :star: :star: 分割线 :star: :star: :star: :star: :star: :star: :star: 开源不易,跪求star ## 使用 1、下载代码,编译通过(只需要编译后台,前台不需要编译,纯手写没有引用和webpack、nodejs等)。 2、确保根目录有如下目录database、queue、storage、webapp三个目录 3、修改系统的数据库连接,在web项目的resources的config目录下的db.setting, 把数据库路径修改正确 4、系统启动,进入http://localhost:9999/manager/index.html管理界面,用户名和密码:admin 5、先创建数据源 6、创建索引和设置字段( :boom: 注意:第一次创建索引,字段要打开保存一次) 7、根据需要创建任务或者CDC源(CDC目前只支持mysql,其他类型数据库还在开发中,有需求可以在Issues里面提) ## 客户端案例 ``` public static void testQuery(String[] args) { QueryClient queryClient = new QueryClient("http://localhost:9999","client","123456"); ClientWrapper clientWrapper = ClientWrapper.create() .SELECT("*") .Page(1,10) .From("supervision") .eq("main_kind","1"); System.out.println(clientWrapper.build()); String str = queryClient.request(clientWrapper); System.out.println(JsonUtil.formatJson(str) ); } ``` 更多例子参考,client项目的test目录 和[Wiki](https://gitee.com/jinjiG/lucene-server/wikis/%E5%85%B3%E8%81%94%E8%A1%A8%E6%9F%A5%E8%AF%A2%E6%80%8E%E4%B9%88%E5%81%9A%EF%BC%9F) ## 当前工作 2024/08/20 前完成对Oracle、Sql Server、PostgreSql的自动化索引支持 2024/08/30 完成 Oracle的CDC 2024/09/10 完成 Sql Server的CDC 2024/09/20 完成 PostgreSql的CDC ## 后续计划 CDC:已完成Mysql CDC,后续Oracle 和 国产的数据库 Facet:增强统计分析功能 ##### 开源不易,跪求star :star: :star: :star: :star: :star: :star: :star: 分割线 :star: :star: :star: :star: :star: :star: :star: 开源不易,跪求star ## 数据流 ![数据流](snapshot/%E7%BB%98%E5%9B%BE1.png) 索引数据通过三种模式实现变化:(1)通过CDC任务(2)通过SQL任务 (3)通过客户端 ![高级架构图](snapshot/%E6%9E%B6%E6%9E%84%E5%9B%BE.png) 服务器与客户端之间通过Http协议,实现数据的增删改查,以及Group和Count查询等功能。 ## 系统截图: ### 【1】首页 ![首页截图](snapshot/%E9%A6%96%E9%A1%B5.png) ![任务浏览](snapshot/%E9%87%8D%E5%BB%BA%E4%BB%BB%E5%8A%A1.png) [任务解释请看Wiki](http://https://gitee.com/jinjiG/lucene-server/wikis/%E7%B3%BB%E7%BB%9F%E5%90%84%E7%A7%8D%E4%BB%BB%E5%8A%A1%E8%A7%A3%E9%87%8A) ### 【2】数据源管理 ![输入图片说明](snapshot/%E6%95%B0%E6%8D%AE%E6%BA%90.png) ### 【3】索引管理 ![输入图片说明](snapshot/%E7%B4%A2%E5%BC%95%E5%88%97%E8%A1%A8.png) ![输入图片说明](snapshot/%E7%B4%A2%E5%BC%95%E6%B7%BB%E5%8A%A0.png) ### 【4】索引字段 [字段设置说明,参考wiki](https://gitee.com/jinjiG/lucene-server/wikis/FAQ) ![输入图片说明](snapshot/2024-08-08%20203709.png) ### 【5】任务管理 ![输入图片说明](snapshot/%E4%BB%BB%E5%8A%A1%E9%A6%96%E9%A1%B5.png) ![输入图片说明](snapshot/%E4%BB%BB%E5%8A%A1%E8%AE%BE%E7%BD%AE.png) ### 【6】CDC管理 ![输入图片说明](snapshot/cdcmain.png) ![输入图片说明](snapshot/cdc.png) ### 【7】数据浏览 ![输入图片说明](snapshot/%E6%B5%8F%E8%A7%88.png) ## 性能: ### 测试主机cpu:i7-10100 2.9,压力测试内存不超过600M。 ### 【搜索性能】 180万数据,80字段,10万次查询3个查询条件,1个排序。50线程,10万次搜索,花费时间: 24 秒 ,每秒请求: 4152 次 ### 【SQLTask索引性能】 180万数据,80字段,Idea测试 2分30秒左右,部署测试1分30秒左右。 2300万数据,20字段,10分钟左右。 ### 【CDC索引性能】 180万数据,80字段,10分钟左右。CDC因为是UPDATE模式需要构建Query先删除数据,然后再索引。不过性能主要卡在Canal Server。 ## 技术路线: 1. Springboot 2.x 2. Lucene 8.x 3. MySql Binlog 4. 连接池:自己搓的动态数据库连接池 5. 数据库:Sqlite3 6. 前端框架,Vue3(无nodejs,无webpack,无vue-cli),Html+Vue+Vue Sfc Loader #### 参与贡献 来杯咖啡 ![输入图片说明](snapshot/%E5%92%96%E5%95%A1.png)