基于 Spring Boot 和 Lucene 开源高性能搜索服务

开源地址在文章末尾,gitee连接

介绍

Lucene Server 是一款基于 Spring Boot 和 Lucene 核心库构建的高性能搜索服务器。它旨在为企业级应用提供强大且灵活的全文检索功能,无需编写一行代码即可实现对海量数据的高效搜索。Spring Boot 的集成确保了服务的快速部署与易于管理,而 Lucene 则提供了业界领先的文本搜索能力和性能。

关键特性

  • 零代码实现:Lucene Server 采用配置优先的设计理念,允许用户通过简单的配置定义索引结构和搜索规则,从而避免了复杂的代码开发过程。
  • 海量数据支持:利用 Lucene 的强大能力,Lucene Server 能够处理和搜索大规模数据集,无论是文档、产品目录还是用户评论,都能迅速响应查询请求。
  • 高度可定制:虽然无需编写代码,但 Lucene Server 提供了丰富的配置选项,允许用户根据具体需求调整索引策略、搜索算法和结果排序,满足个性化业务场景。
  • 易于集成与扩展:基于 Spring Boot 构建,Lucene Server 能够轻松地与现有的微服务架构融合,同时也支持通过插件机制添加新的功能模块,保证系统的灵活性和可扩展性。
  • 强大的搜索语法:支持复杂的查询语法,包括布尔运算、短语匹配、模糊搜索和范围查询,使搜索更加精准和智能。
  • 实时更新与高可用性:Lucene Server 支持实时数据更新,确保搜索结果的时效性。同时,通过集群部署和负载均衡,实现高可用和故障恢复,保障服务的稳定运行。

主要功能

  • 全文检索服务:

    基于Springboot和Lucene构建,提供类似于Elasticsearch的高效全文检索能力。

  • Web管理界面:

    内置直观的Web界面,支持数据源集成、任务调度、权限管理等配置,简化系统管理流程。

  • 灵活的数据集成:

    通过Web界面配置,轻松集成各类数据源,扩展性良好。

  • 任务管理与监控:

    实现任务调度与监控,确保数据处理和检索任务的顺利执行。

  • 轻量级客户端API:

    提供极简的Java客户端,仅包含两个文件,采用类似MyBatis-Plus的条件构造器模式,便于快速集成。支持索引库的增删改查、Count统计及Group聚合查询,满足多样化检索需求。支持客户端权限验证,保障数据安全与访问控制。客户端不引入额外第三方库,保证系统纯净度与稳定性。

  • 简易集成与维护:

    清晰的架构与接口设计,降低集成复杂度,简化日常维护工作。

Lucene Server致力于提供一个高性能、易用且安全的全文检索解决方案,适用于多种应用场景。

客户端案例

 
    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目录
 

后续计划

Flink:实现Flink CDC
Facet:增强统计分析功能

特高级架构图

高级数据流图

 索引数据通过三种模式实现变化:(1)通过CDC模式(目前实现了Canal,Flink还未)(2)通过SQL任务 (3)通过客户端

高级架构图

 服务器与客户端之间通过Http协议,实现数据的增删改查,以及Group和Count查询等功能。

系统截图:

【1】首页

首页

运行中的任务

【2】数据源管理

输入图片说明

【3】索引管理

输入图片说明

输入图片说明

【4】索引字段

字段设置说明,参考wiki

输入图片说明

【5】任务管理

输入图片说明

输入图片说明

【6】Canal管理

已经实现CDC,管理界面未实现

【7】Flink

未实现CDC,管理界面未实现

性能:

 测试主机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. Canal 1.7
4. 连接池,穷,用不起好的,Hutool SimpleDBPool
5. 数据库,穷,Sqlite3
6. 前端框架,穷,Vue3(无nodejs,无webpack,无vue-cli),Html+Vue+Vue Sfc Loader

开源地址:Lucene Server: Lucene Server 是一款简单、灵活、性能强劲的Lucene全文检索服务。Lucene Server是基于 Spring Boot 和 Lucene 核心库构建,Lucene Server旨在为企业级应用提供强大且灵活的全文检索功能,零代码实现对海量数据的高效搜索。Spring Boot 的集成确保了服务的快速部署与易于管理,而 Lucene 则提供了业界领先的文本搜索能力和性能。 (gitee.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值