Flarum本身的索引对中文不太友好,所以选择使用Sonic进行分词创建索引。当然Flarum也是支持的,并且有相关的拓展。本篇文章记录如何借助Sonic让Flarum开启中文搜索。
关于Sonic
Sonic是一个用Rust编写的开源搜索引擎服务器,专注于提供简单、高性能和轻量级的搜索解决方案。它接收用户的查询请求并返回与查询匹配的标识符,这些标识符指向实际文档,但Sonic本身不存储这些文档数据。相反,应用程序需要从其他数据库(如MongoDB、MySQL等)中检索实际的文档数据,因为搜索结果仅包含标识符。这种设计使得整个系统在存储方面更为简单和高效。 Sonic的应用领域广泛,可以用于检索消息、文章、CRM联系人等不同类型的文档。其轻量级和高性能的特性使其成为处理搜索需求的可靠选择。
部署
这里我们选用Docker来部署Sonic,便于管理项目。
目前最新的宝塔面板已经支持一键安装并启用Docker,如果没有Docker这个菜单选项的,可以在「软件商店」搜索「docker」,选择一个进行可视化安装
环境
- CentOS Stream 8 x86_64(Py3.7.9)
- 宝塔面板
拉取镜像
在镜像名中输入:「valeriansaliou/sonic:v1.4.3」,点击确认即可拉取镜像。
配置文件
由于是在容器中运行,所以我们需要在本机目录编写一个配置文件,然后映射到容器中中,并且将存储目录也映射过去。
例如,我这里在「/home/sonic
」这个目录下创建了config.cfg
文件,以下是该文件的模板:
[server]
log_level = "error"
[channel]
inet = "0.0.0.0:1491"
tcp_timeout = 30
auth_password = "你的自定义密码"
[channel.search]
query_limit_default = 10
query_limit_maximum = 100
query_alternates_try = 4
suggest_limit_default = 5
suggest_limit_maximum = 20
[store]
[store.kv]
path = "/var/lib/sonic/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 = "/var/lib/sonic/store/fst/"
[store.fst.pool]
inactive_after = 300
[store.fst.graph]
consolidate_after = 180
max_size = 2048
max_words = 250000
这里我们选择监听「1491」端口,所以在创建容器时,也要将「1491」端口穿透出去。
编写好config.cfg
文件后,我们在同目录下创建一个「store」目录,以下是我们需要创建的文件和目录
添加并启动容器
如上图所示,分别配置一下端口和挂载目录就行,如果要填写启动命令的也行,但是其他的选项就不要动
添加后容器就会自动运行,如果没有错的话,你应该会看到容器已经进入已启动的状态,如下图所示:
如果并没有「已启动」,检查一下容器的日志,看看是哪里存在问题。
安装第三方插件
配置完以上后,我们来安装对应的拓展插件,进入网站目录,执行以下命令:
composer require ganuonglachanh/sonic
安装完后,我们来到插件设置,配置一下密码就行:
这里的密码就是你在创建config.cfg
文件时所填写的密码,主要不要填写错了。
创建索引
完成以上步骤后,最后执行以下命令创建索引,重新使用论坛搜索即可搜索到中文:
php flarum sonic:addtoindex
完事儿,不用再去折腾什么数据啥的了。
📮评论