GoFound
GoFound
一个golang实现的全文检索引擎,支持持久化和单机亿级数据毫秒级查找。
接口可以通过http调用。
详见 API文档
文档
在线体验
Simple社区使用的GoFound,可以直接模糊搜索相关帖子
在线体验
GoFound在线管理后台Demo
http://119.29.69.50:5678/admin
QQ交流群
556102631
二进制文件下载
支持Windows、Linux、macOS、(amd64和arm64)和苹果M1 处理器
点击下载
技术栈
- 二分法查找
- 快速排序法
- 倒排索引
- 正排索引
- 文件分片
- golang-jieba分词
- leveldb
为何要用golang实现一个全文检索引擎?
-
正如其名,GoFound
去探索全文检索的世界,一个小巧精悍的全文检索引擎,支持持久化和单机亿级数据毫秒级查找。
-
传统的项目大多数会采用ElasticSearch
来做全文检索,因为ElasticSearch
够成熟,社区活跃、资料完善。缺点就是配置繁琐、基于JVM对内存消耗比较大。
-
所以我们需要一个更高效的搜索引擎,而又不会消耗太多的内存。 以最低的内存达到全文检索的目的,相比ElasticSearch
,gofound
是原生编译,会减少系统资源的消耗。而且对外无任何依赖。
安装和启动
下载好源码之后,进入到源码目录,执行下列两个命令
直接下载 可执行文件 可以不用编译,省去这一步。
go get && go build
./gofound --addr=:8080 --data=./data
docker build -t gofound .
docker run -d --name gofound -p 5678:5678 -v /mnt/data/gofound:/usr/local/go_found/data gofound:latest
多语言SDK
使用gofound的多语言SDK,可以在不同语言中使用gofound。但是请注意,版本号与gofound需要一致。主版本和子版本号,修订版不一致不影响。
Java
Python
Node.js
其他语言的SDK,正在陆续完善中。也可以直接通过API文档用HTTP请求实现。
和ES比较
ES |
GoFound |
支持持久化 |
支持持久化 |
基于内存索引 |
基于磁盘+内存缓存 |
需要安装JDK |
原生二进制,无外部依赖 |
需要安装第三方分词插件 |
自带中文分词和词库 |
默认没有可视化管理界面 |
自带可视化管理界面 |
内存占用大 |
基于Golang原生可执行文件,内存非常小 |
配置复杂 |
默认可以不加任何参数启动,并且提供少量配置 |
待办
TODO
使用GoFound的用户
Simple社区| 贝塔博客 | Book360
深圳市十二点科技有限公司|深圳市恒一博科技有限公司
西安易神网络信息系统服务有限公司
影视资源搜索|酷易物联|French博客
好咪二次元之家
发布日志
发布日志
开发成员