fastsearch

command module
v0.0.0-...-98a29f8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 19, 2024 License: Apache-2.0 Imports: 1 Imported by: 0

README

Fastsearch

fastsearch 一个golang实现的全文检索引擎,支持持久化和单机亿级数据毫秒级查找。

  • 支持持久化

  • 基于磁盘+内存缓存

  • 支持表达式

  • 原生二进制,无外部依赖

  • 自带中文分词和词库

  • 自带可视化管理界面

  • 基于Golang原生可执行文件,内存非常小

  • 默认可以不加任何参数启动,并且提供少量配置

  • 快速检索

  • 主动防御监测非法关键词

  • 禁用搜索非法关键词

  • 负面词管理

  • 负面消息推送

  • 接口可以通过http调用。

  • 实时消息通知(支持企业微信、钉钉等)

  • MQTT协议实时推送

  • 增加对文档内容进行索引和搜索(新增参数cut_document)

  • 增加补充关键字检索 (新增参数has_key,keys)

详见 API文档

文档

fastsearch在线管理后台Demo

http://127.0.0.1:5679/admin

二进制文件下载

支持Windows、Linux、macOS、(amd64和arm64)和苹果M1 处理器

技术栈

  • 二分法查找
  • 快速排序法
  • 倒排索引
  • 正排索引
  • 文件分片
  • golang-jieba分词
  • leveldb
  • 支持表达式的条件过滤
  • 支持表达式权限排序
为何要用golang实现一个全文检索引擎?
  • 正如其名,fastsearch去探索全文检索的世界,一个小巧精悍的全文检索引擎,支持持久化和单机亿级数据毫秒级查找。

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

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

安装和启动

下载好源码之后,进入到源码目录,执行下列两个命令

  • 编译

直接下载 可执行文件 可以不用编译,省去这一步。

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

多语言SDK

使用fastsearch的多语言SDK,可以在不同语言中使用fastsearch。但是请注意,版本号与fastsearch需要一致。主版本和子版本号,修订版不一致不影响。

API文档用HTTP请求实现。

和ES比较

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

功能特性

  • 支持持久化
  • 基于磁盘+内存缓存
  • 支持表达式
  • 原生二进制,无外部依赖
  • 自带中文分词和词库
  • 自带可视化管理界面
  • 基于Golang原生可执行文件,内存非常小
  • 默认可以不加任何参数启动,并且提供少量配置
  • 快速检索

新增功能

  • 主动防御监测非法关键词
  • 禁用搜索非法关键词
  • 负面词管理
  • 负面消息推送

商用授权

  • 针对个人或公益组织使用,可免授权
  • 针对企业商业用途,请捐赠后联系作者授权
  • 贡献代码,可免费获取商业授权

待办

TODO

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package leveldb provides implementation of LevelDB key/value database.
Package leveldb provides implementation of LevelDB key/value database.
cache
Package cache provides interface and implementation of a cache algorithms.
Package cache provides interface and implementation of a cache algorithms.
comparer
Package comparer provides interface and implementation for ordering sets of data.
Package comparer provides interface and implementation for ordering sets of data.
errors
Package errors provides common error types used throughout leveldb.
Package errors provides common error types used throughout leveldb.
filter
Package filter provides interface and implementation of probabilistic data structure.
Package filter provides interface and implementation of probabilistic data structure.
iterator
Package iterator provides interface and implementation to traverse over contents of a database.
Package iterator provides interface and implementation to traverse over contents of a database.
journal
Package journal reads and writes sequences of journals.
Package journal reads and writes sequences of journals.
memdb
Package memdb provides in-memory key/value database implementation.
Package memdb provides in-memory key/value database implementation.
opt
Package opt provides sets of options used by LevelDB.
Package opt provides sets of options used by LevelDB.
storage
Package storage provides storage abstraction for LevelDB.
Package storage provides storage abstraction for LevelDB.
table
Package table allows read and write sorted key/value.
Package table allows read and write sorted key/value.
util
Package util provides utilities used throughout leveldb.
Package util provides utilities used throughout leveldb.
mochi-mqtt
server
Package mqtt provides a high performance, fully compliant MQTT v5 broker server with v3.1.1 backward compatibility.
Package mqtt provides a high performance, fully compliant MQTT v5 broker server with v3.1.1 backward compatibility.
mqtt
exp
tests
web

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL