这一次ElasticSearch可能感受到了来自东方的压力 GoFound
单机亿级数据毫秒级查找的搜索引擎GoFound
什么是 GoFound?
GoFound 一个golang实现的全文检索引擎,支持持久化和单机亿级数据毫秒级查找,接口可以通过http调用。
为什么要用GoFound?
一个小巧精悍的全文检索引擎,支持持久化和单机亿级数据毫秒级查找。
ElasticSearch缺点就是配置繁琐、基于JVM对内存消耗比较大。
gofound是原生编译,会减少系统资源的消耗。而且对外无任何依赖。
特性与优势
二分法查找
快速排序法
倒排索引
正排索引
文件分片
golang-jieba分词
leveldb
编译与启动
git clone https://github.com/newpanjing/gofound.git
go get && go build
#作者是用的1.18版本,已经用到了1.17的新特性embed 和 fs,所以GO至少版本要大于1.17
./gofound --addr=:8080 --data=./data
1.启动服务端后就可以访问到后台
http://127.0.0.1:8080/admin
#笔者发现,明显后台没有做完,但是接口基本可用,尽量别用后台就行。
2.使用接口进行新增和查询操作
#新增数据接口
curl -H "Content-Type:application/json" -X POST --data '{"id":1,"text":"深圳北站","document":{"title":"阿森松岛所445","number":223}}' 127.0.0.1:8080/api/index?database=testdb1
#响应结果
{
"state": true,
"message": "success"
}
#我定义了一个库名:testdb1
#查询一下
POST :127.0.0.1:8080/api/query?database=testdb1
{
"query": "北站",
"page": 1,
"limit": 10,
"order": "desc",
"highlight": {}
}
#响应结果
{
"state": true,
"message": "success",
"data": {
"total": 3,
"pageCount": 1,
"page": 1,
"limit": 10,
"documents": [
{
"id": 1,
"text": "深圳北站",
"document": {
"number": 223,
"title": "阿森松岛所445"
},
"originalText": "深圳北站",
"score": 1,
"keys": [
"深圳",
"北站"
]
},
{
"text": "深圳北站",
"document": {
"number": 223,
"title": "阿森松岛所445"
},
"originalText": "深圳北站",
"score": 1,
"keys": [
"深圳",
"北站"
]
}
],
"words": [
"北站"
]
}
}
其他操作,包括完整的CRUD还有分词接口都在下面的文档中可以找到,这里就不多作赘述,简单的带大家用用即可。还有分词操作、CRUD所有操作,都可以看文档来对着写即可,记得尽量不要用他的可视化后台,会出现各种未知问题。
(文档链接点击文末阅读原文即可跳转哦~)
参考链接:
https://github.com/newpanjing/gofound
(go语言全文检索引擎,基于平衡二叉树+正排索引、倒排索引实现,可支持亿级数据、毫秒级查询,操作简单,使用http接口,任何系统都可以使用。)
END
-猜你想看-
B站 API 网关的发展
聊聊Twitter的架构决策
想要了解Go更多内容,欢迎扫描下方👇 关注 公众号,回复关键词 [实战群] ,就有机会进群和我们进行交流~
分享、在看与点赞,至少我要拥有一个叭~
评论