Flarum Search By Sonic 和Docker安装记录
说明:本文主要内容是利用Sonic引擎实现Flarum也可以搜索中文,为了方便,使用了Docker拉取Sonic镜像。
演示参数如下
Flarum版本:1.4.0
PHP版本:7.4
数据库:Mariadb10
系统:Debian 11
插件地址GitHub - ganuonglachanh/flarum-sonic: Support search in flarum by sonic
插件原文 保姆式Flarum中文搜索使用Sonic引擎解决方案 - Flarum 中文社区https://discuss.flarum.org.cn/d/2797
第一步,安装Docker
以Debian为例(如果你是以root身份运行的,请把以下的sudo去掉)
1、更新和安装所需工具
sudo apt-get update
'
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release'
2、安装docker的gpg key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
3、安装Docker源
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4、安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
5、验证docker是否成功(成功会显示版本号)
docker -v
6、启动Docker服务并且设置开机自动运行
sudo systemctl start docker
sudo systemctl enable docker
第二步,安装Sonic
原文GitHub - valeriansaliou/sonic: 🦔 Fast, lightweight & schema-less search backend. An alternative to Elasticsearch that runs on a few MBs of RAM.
创建sonic的config.cfg配置文件
我以home目录为例,你可自身的情况而定。
2-1,进入home目录
cd /home
2-2,创建sonic目录
mkdir sonic
2-3,创建config.cfg配置文件
sudo vim /home/sonic/config.cfg
2-4,插入以下内容
[server]
log_level = "error"
[channel]
inet = "0.0.0.0:1491"
tcp_timeout = 30
auth_password = "SecretPassword"
[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
编辑完,按ESC键退出编辑模式,并输入以下命令保存退出vim
:wq
2-5,运行配置文件
( 注意/home/sonic/config.cfg跟你刚才2-4步骤创建的配置目录一致,还有sonic:v版本号 https://github.com/valeriansaliou/sonic)
docker run -d -p 1491:1491 -v /home/sonic/config.cfg:/etc/sonic.cfg -v ~/sonic/store/:/var/lib/sonic/store/ valeriansaliou/sonic:v1.3.5
如果成功,就会出现一串字母。
第三步,安装插件
composer require ganuonglachanh/sonic
第四步,启用插件
进入论坛后台,启用Search By Sonic插件,配置不用修改,直接保存即可。
// 2024-02-27 更新:
语言环境这里,简体中文语言的论坛,可以尝试使用 cmn
这个代码,这样分词会好很多,其他中文语言环境可以参考 https://iso639-3.sil.org/code/zho 里的 Individual Languages 代码。
第五步,创建索引
php flarum sonic:addtoindex
至此,Search By Sonic已经可以工作了,你打开论坛搜索看看。
因为默认搜索的关键词在结果页只是用加粗显示,如果想让关键词与其他内容区分,可以在论坛后台加入自定义css,源码如下(#ffff80是颜色代码,可自行更改)
/* 搜索结果关键字高亮 */
.DiscussionListItem-main mark {
background: #ffff80 !important;
}
补充开机启动 Docker 容器
1、先看看容器名字,输入命令 docker ps -a
找到容器ID或者名称
docker ps -a
2、输入命令 docker update --restart=always 容器ID或者名称
docker update --restart=always xenodochial_dewdney
请把上述 xenodochial_dewdney
换成你的容器ID或者名称