fastsearch 一个golang实现的全文检索引擎,支持持久化和单机亿级数据毫秒级查找。
-
支持持久化
-
基于磁盘+内存缓存
-
支持表达式
-
原生二进制,无外部依赖
-
自带中文分词和词库
-
自带可视化管理界面
-
基于Golang原生可执行文件,内存非常小
-
默认可以不加任何参数启动,并且提供少量配置
-
快速检索
-
主动防御监测非法关键词
-
禁用搜索非法关键词
-
负面词管理
-
负面消息推送
-
接口可以通过http调用。
-
实时消息通知(支持企业微信、钉钉等)
-
MQTT协议实时推送
-
增加对文档内容进行索引和搜索(新增参数cut_document)
-
增加补充关键字检索 (新增参数has_key,keys)
详见 API文档
支持Windows、Linux、macOS、(amd64和arm64)和苹果M1 处理器
- 二分法查找
- 快速排序法
- 倒排索引
- 正排索引
- 文件分片
- golang-jieba分词
- leveldb
- 支持表达式的条件过滤
- 支持表达式权限排序
-
正如其名,
fastsearch去探索全文检索的世界,一个小巧精悍的全文检索引擎,支持持久化和单机亿级数据毫秒级查找。 -
传统的项目大多数会采用
ElasticSearch来做全文检索,因为ElasticSearch够成熟,社区活跃、资料完善。缺点就是配置繁琐、基于JVM对内存消耗比较大。 -
所以我们需要一个更高效的搜索引擎,而又不会消耗太多的内存。 以最低的内存达到全文检索的目的,相比
ElasticSearch,fastsearch是原生编译,会减少系统资源的消耗。而且对外无任何依赖。
下载好源码之后,进入到源码目录,执行下列两个命令
- 编译
直接下载 可执行文件 可以不用编译,省去这一步。
go get && go build- 启动
./fastsearch --addr=:8080 --data=./data/db- docker部署
docker build -t fastsearch .
docker run -d --name fastsearch -p 5678:5679 -v /mnt/data/fastsearch:/usr/local/fastsearch/data fastsearch:latest- 其他命令 参考 配置文档
使用fastsearch的多语言SDK,可以在不同语言中使用fastsearch。但是请注意,版本号与fastsearch需要一致。主版本和子版本号,修订版不一致不影响。
API文档用HTTP请求实现。
| ES | fastsearch |
|---|---|
| 支持持久化 | 支持持久化 |
| 基于内存索引 | 基于磁盘+内存缓存 |
| 支持表达式 | 支持表达式 |
| 需要安装JDK | 原生二进制,无外部依赖 |
| 需要安装第三方分词插件 | 自带中文分词和词库 |
| 默认没有可视化管理界面 | 自带可视化管理界面 |
| 内存占用大 | 基于Golang原生可执行文件,内存非常小 |
| 配置复杂 | 默认可以不加任何参数启动,并且提供少量配置 |
- 支持持久化
- 基于磁盘+内存缓存
- 支持表达式
- 原生二进制,无外部依赖
- 自带中文分词和词库
- 自带可视化管理界面
- 基于Golang原生可执行文件,内存非常小
- 默认可以不加任何参数启动,并且提供少量配置
- 快速检索
- 主动防御监测非法关键词
- 禁用搜索非法关键词
- 负面词管理
- 负面消息推送
- 针对个人或公益组织使用,可免授权
- 针对企业商业用途,请捐赠后联系作者授权
- 贡献代码,可免费获取商业授权