Sonic 是一个快速、轻量级和无模式的搜索后端。它摄取搜索文本和标识符元组,然后可以在微秒的时间内对其进行查询。
在某些用例中,Sonic 可以用作超重型和全功能搜索后端(例如 Elasticsearch)的简单替代品。它能够规范化自然语言搜索查询,自动完成搜索查询并为查询提供最相关的结果。Sonic是标识符索引,而不是文档索引;查询时,它会返回 ID,这些 ID 可用于引用外部数据库中的匹配文档。
在设计 Sonic 时,对性能和代码清洁度给予了高度关注。它的目标是无崩溃、超快并最大限度地减少服务器资源的压力(我们的测量表明,Sonic - 在负载下 - 响应 μs 范围内的搜索查询,占用约 30MB RAM 并且 CPU 占用空间低;请参阅我们的基准测试)。
🇫🇷在法国南特制作。
📰Sonic 项目最初是在我个人日记的一篇文章中宣布的。
[upl-imagex-preview uuid=8988e1ca-885f-4f79-a626-df91cf55c7bd preview_uri=//imagex.mediy.cn/555860c99cc30de9c2882c545d0eff53/63ecf2f3/2023-02-15/1676471967-377277-sonic.jpg~tplv-pnzcxrz0r7-mediy-cn.image fullscreen_uri=//imagex.mediy.cn/d5568256c599e92c886972168623203e/63ecf2f3/2023-02-15/1676471967-377277-sonic.jpg~tplv-pnzcxrz0r7-mediy-cn-image.image base_name=sonic.jpg]
« Sonic » 是 Sonic 项目的吉祥物。我把它画得像一只迷幻的时髦刺猬。
Sonic 是用 Rust 构建的。要安装它,请使用 cargo install
👉从源安装:
- 如果您从 Git 中提取源代码,则可以使用以下方式构建它 cargo
- 您也可以直接使用以下命令安装 Sonic cargo install
cargo install sonic-server
👉从 Docker 安装 Sonic:
您可能会发现通过 Docker 运行 Sonic 很方便。您可以在 Docker Hub 上找到预先构建的 Sonic 映像,名称为valeriansaliou/sonic。
- 首先拉取镜像 valeriansaliou/sonic
docker pull valeriansaliou/sonic:v1.4.0
- 然后添加
config.cfg
配置文件,路径为/path/to/your/sonic/
,您可以自定义路径,但是需要把下面的路径替换为您的配置文件路径。并填入以下内容:
# Sonic
# Fast, lightweight and schema-less search backend
# Configuration file
# Example: https://github.com/valeriansaliou/sonic/blob/master/config.cfg
[server]
log_level = "debug"
[channel]
inet = "0.0.0.0:1491"
tcp_timeout = 300
auth_password = "填入您想要设置的密码,这个密码要和 Flarum sonic 插件中的密码一样 "
[channel.search]
query_limit_default = 10
query_limit_maximum = 100
query_alternates_try = 4
suggest_limit_default = 5
suggest_limit_maximum = 20
list_limit_default = 100
list_limit_maximum = 500
[store]
[store.kv]
path = "./data/store/kv/"
retain_word_objects = 1000
[store.kv.pool]
inactive_after = 1800
[store.kv.database]
flush_after = 900
compress = true
parallelism = 2
max_files = 100
max_compactions = 1
max_flushes = 1
write_buffer = 16384
write_ahead_log = true
[store.fst]
path = "./data/store/fst/"
[store.fst.pool]
inactive_after = 300
[store.fst.graph]
consolidate_after = 180
max_size = 2048
max_words = 250000
docker run -p 1491:1491 -v /path/to/your/sonic/config.cfg:/etc/sonic.cfg -v /path/to/your/sonic/store/:/var/lib/sonic/store/ valeriansaliou/sonic:v1.4.0
- 开机自启动,其中 angry_burnell 为容器名称,记得替换
docker update --restart=always angry_burnell
composer require ganuonglachanh/sonic
php flarum sonic:addtoindex
php flarum sonic:addtoindex
🧨重点提示
channel.inet
设置为0.0.0.0:1491
(这让 Sonic 可以从容器外到达)
store.kv.path
设置为/var/lib/sonic/store/kv/
(这让 Sonic 可以访问外部 KV 存储目录)
store.fst.path
设置为/var/lib/sonic/store/fst/
(这允许 Sonic 访问外部 FST 存储目录)
可以从 联系到 Sonic tcp://localhost:1491
。
auth_password = "填入您想要设置的密码"
- 在
Flarum Search By Sonic
插件管理中,填入对应的容器IP和端口,填入您设置的密码即可。
- 最终效果如下:
[upl-imagex-preview uuid=975c27bb-f2c4-4de9-a5ae-b353590e8d08 preview_uri=//imagex.mediy.cn/d1f0e053caec82d762e23af5cc6a1839/63ecf2f3/2023-02-15/1676473048-281427-image.png~tplv-pnzcxrz0r7-mediy-cn.image fullscreen_uri=//imagex.mediy.cn/c66afbb47d3cd99fcd7b326b368e2852/63ecf2f3/2023-02-15/1676473048-281427-image.png~tplv-pnzcxrz0r7-mediy-cn-image.image base_name=image.png]