天气与日历 切换到窄版

 找回密码
 立即注册

QQ登录

只需一步,快速开始

【好消息,好消息,好消息】VIP会员可以发表文章赚积分啦 !
查看: 26|回复: 0

[Java源码] 一款企业级实时高效的搜索引擎服务 简单、灵活、性能强劲的java源码

[复制链接]

2680

主题

0

回帖

2819

积分

管理员

积分
2819
发表于 2024-11-4 20:42:20 | 显示全部楼层 |阅读模式
一款企业级实时高效的搜索引擎服务  简单、灵活、性能强劲的java源码
一、项目简介
基于 Spring Boot 和 Lucene 核心库构建的一款简单、灵活、性能强劲的搜索引擎。Lucene Server通过配置,可 零代码 实现对海量数据的实时同步。为企业级应用提供实时的、高效的搜索引擎基础服务。
二、功能概述关键特性
  • 零代码实现:Lucene Server 采用配置优先的设计理念,允许用户通过简单的配置定义索引结构和搜索规则,从而避免了复杂的代码开发过程。
  • 海量数据支持:利用 Lucene 的强大能力,Lucene Server 能够处理和搜索大规模数据集,无论是文档、产品目录还是用户评论,都能迅速响应查询请求。
  • 高度可定制:虽然无需编写代码,但 Lucene Server 提供了丰富的配置选项,允许用户根据具体需求调整索引策略、搜索算法和结果排序,满足个性化业务场景。
  • 易于集成与扩展:基于 Spring Boot 构建,Lucene Server 能够轻松地与现有的微服务架构融合,同时也支持通过插件机制添加新的功能模块,保证系统的灵活性和可扩展性。
  • 强大的搜索语法:支持复杂的查询语法,包括布尔运算、短语匹配、模糊搜索和范围查询,使搜索更加精准和智能。
  • 实时更新与高可用性:通过CDC(Change Data Capture ,数据变化捕获),Lucene Server 支持准实时数据更新,确保搜索结果的时效性。同时,通过集群部署和负载均衡,实现高可用和故障恢复,保障服务的稳定运行。

主要功能
  • 全文检索服务:
  • 基于Springboot和Lucene构建,提供类似于Elasticsearch的高效全文检索能力。
  • Web管理界面:
  • 内置直观的Web界面,支持数据源集成、任务调度、权限管理等配置,简化系统管理流程。
  • 灵活的数据集成:
  • 通过Web界面配置,轻松集成各类数据源,扩展性良好。
  • 任务管理与监控:
  • 实现任务调度与监控,确保数据处理和检索任务的顺利执行。系统各种任务的解释,请参看Wiki
  • 轻量级客户端API:
  • 提供极简的Java客户端,仅包含两个文件,采用类似MyBatis-Plus的条件构造器模式,便于快速集成。支持索引库的增删改查、Count统计及Group聚合查询,满足多样化检索需求。支持客户端权限验证,保障数据安全与访问控制。客户端不引入额外第三方库,保证系统纯净度与稳定性。
  • 简易集成与维护:
  • 清晰的架构与接口设计,降低集成复杂度,简化日常维护工作。

Lucene Server致力于提供一个高性能、易用且安全的全文检索解决方案,适用于多种应用场景。
三、技术选型
索引数据通过三种模式实现变化:(1)通过CDC任务(2)通过SQL任务 (3)通过客户端



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




使用

  • 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里面提)

[color=rgb(51, 102, 153) !important]复制代码

客户端案例
  • 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) );
  • }

[color=rgb(51, 102, 153) !important]复制代码

更多例子参考,client项目的test目录 和Wiki


性能:
  • 测试主机cpu:i7-10100 2.9,压力测试内存不超过600M。

[color=rgb(51, 102, 153) !important]复制代码

【搜索性能】
  • 180万数据,80字段,10万次查询3个查询条件,1个排序。50线程,10万次搜索,花费时间: 24 秒 ,每秒请求: 4152 次

[color=rgb(51, 102, 153) !important]复制代码

【SQLTask索引性能】
  • 180万数据,80字段,Idea测试 2分30秒左右,部署测试1分30秒左右。
  • 2300万数据,20字段,10分钟左右。

[color=rgb(51, 102, 153) !important]复制代码

【CDC索引性能】
  • 180万数据,80字段,10分钟左右。CDC因为是UPDATE模式需要构建Query先删除数据,然后再索引。不过性能主要卡在Canal Server。

[color=rgb(51, 102, 153) !important]复制代码

技术路线:
  • 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

[color=rgb(51, 102, 153) !important]复制代码














以下内容需要积分高于 2 才可浏览

链接: https://pan.baidu.com/s/1L0s2tMuzpBg-1J1coG7H6w



提取码下载:
文件名称:提取码下载.txt 
下载次数:0  文件大小:14 Bytes  售价:69金钱 [记录]
下载权限: 不限 [购买VIP]   [充值]   [在线充值]   【VIP会员5折;永久VIP免费】
安全检测,请放心下载



相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员5折;永久VIP免费
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
快速回复 返回顶部 返回列表