一个golang实现的开源全文检索引擎:GoFound

1,125次阅读
没有评论

GoFound 一个 golang 实现的全文检索引擎,支持持久化和单机亿级数据毫秒级查找。接口可以通过 http 调用。

Gitee:https://toscode.gitee.com/anrubing/gofound

GitHub:https://github.com/sea-team/gofound

二进制文件下载:https://github.com/sea-team/gofound/releases

启动 GoFound

./gofound --addr=:8080 --data=./data

配置参数

在编译好 gofound 之后,就可以启动了。

./gofound

启动并监听 8080 端口,并设置数据存储路径为 ./data

./gofound --addr=:8080 --data=./data

参数


  -addr string
        设置监听地址和端口 (default "0.0.0.0:5678")
  -auth string
        开启认证,例如: admin:123456
  -config string
        配置文件路径,配置此项其他参数忽略
  -data string
        设置数据存储目录 (default "./data")
  -debug
        设置是否开启调试模式 (default true)
  -dictionary string
        设置词典路径 (default "./data/dictionary.txt")
  -enableAdmin
        设置是否开启后台管理 (default true)
  -enableGzip
        是否开启 gzip 压缩 (default true)
  -gomaxprocs int
        设置 GOMAXPROCS (default 20)
  -timeout int
        数据库超时关闭时间 (秒) (default 600)

为何要用 golang 实现一个全文检索引擎?

正如其名,GoFound 去探索全文检索的世界,一个小巧精悍的全文检索引擎,支持持久化和单机亿级数据毫秒级查找。

传统的项目大多数会采用 ElasticSearch 来做全文检索,因为 ElasticSearch 够成熟,社区活跃、资料完善。缺点就是配置繁琐、基于 JVM 对内存消耗比较大。

所以我们需要一个更高效的搜索引擎,而又不会消耗太多的内存。以最低的内存达到全文检索的目的,相比 ElasticSearch,gofound 是原生编译,会减少系统资源的消耗。而且对外无任何依赖。

和 ES 比较

ES GoFound
支持持久化 支持持久化
基于内存索引 基于磁盘 + 内存缓存
需要安装 JDK 原生二进制,无外部依赖
需要安装第三方分词插件 自带中文分词和词库
默认没有可视化管理界面 自带可视化管理界面
内存占用大 基于 Golang 原生可执行文件,内存非常小
配置复杂 默认可以不加任何参数启动,并且提供少量配置

Api 文档

https://toscode.gitee.com/anrubing/gofound/blob/main/docs/api.md

一个 golang 实现的开源全文检索引擎:GoFound

正文完
有偿技术支持加微信
post-qrcode
 0
评论(没有评论)
验证码