查看原文
其他

Go语言实现毫秒级查询的开源全文检索引擎

TJ TJ君 2022-07-01

大家好,我是TJ

关注TJ君,回复“武功秘籍”免费获取计算机宝典书籍

TJ君将之前发过的各种项目及工具进行了整理,收录到了GitHub项目,欢迎各位小伙伴光临Star,地址如下:https://github.com/Wechat-TJ/TJ-WORLD-FORU

大家平时都接触过什么样的搜索引擎呢?今天TJ君要和大家分享一个基于平衡二叉树+正排索引、倒排索引实现的GO语言的搜索引擎,GoFound!

GoFound,全文检索引擎,可支持亿级数据,达到毫秒级查询。其使用简单,使用http接口,任何系统都可以使用。

一般传递的项目大多采用ElasticSearch来做全文检索,因为相比较其他产品,ElasticSearch足够成熟,资料够多,社区够完善,但是对于新手来说,ElasticSearch的配置过于繁琐,对于性能消耗来说,ElasticSearch的内存消耗有时候过于大大大大了。

所以呢,GoFound的目的在于实现更高效的搜索,更低的资源消耗,以最低的内存达到全文检索的目的,同时相比较ElasticSearch做出的引擎,GoFound属于原生编译,对外界依赖基本为0。

两者的比较如下:

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

GoFound主要用到技术栈有:

  • 平衡二叉查找树
  • 二分法查找
  • 快速排序法
  • 倒排索引
  • 正排索引
  • 文件分片
  • golang-jieba分词
  • leveldb

安装启动十分方便:

  • 编译
go get && go build
  • 启动
./gofound --addr=:8080 --data=./data
  • docker部署
docker build -t gofound .
docker run -d --name gofound -p 5678:5678 -v /mnt/data/gofound:/usr/local/go_found/data gofound:latest

GoFound启动之后,会监听一个TCP端口,接收来自客户端的搜索请求。

所以,想感受下速度的小伙伴,快来试试吧~

点击下方卡片,关注公众号“TJ君

回复“gofind2022”,获取仓库地址

关注我,每天了解一个牛x、好用、有趣的东东


往期推荐

功能齐全的开源微服务商城系统

可视化搭建的开源商场平台~

中英双版本开源计算机自学指南,少走弯路就靠它了



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存