Sonic


# Sonic

# 安装

# 安装 sonic-server (opens new window)

使用 root 用户执行如下命令:

apt install rustc #安装 rust
apt install build-essential clang libclang-dev libc6-dev g++ llvm-dev
1
2

请查看 此文档 (opens new window) 更换到 USTC Crates 源后,执行如下命令:

cargo install sonic-server
1

# 安装 sonic 插件

使用 root 用户执行如下命令:

yarn global add @hydrooj/sonic
hydrooj addon add @hydrooj/sonic
1
2

# 启动

/root/.sonic/config.cfg(没有的自行建立,也可以换成其他的你喜欢的路径)按照以下配置示例写入配置。

配置示例:

# Sonic
# Fast, lightweight and schema-less search backend
# Configuration file
# Example: https://github.com/valeriansaliou/sonic/blob/master/config.cfg


[server]

log_level = "error"


[channel]

inet = "127.0.0.1:1491" # 默认监听本机
tcp_timeout = 300

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 = "/data/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 = "/data/sonic/store/fst/"

[store.fst.pool]

inactive_after = 300

[store.fst.graph]

consolidate_after = 180

max_size = 2048
max_words = 250000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

执行如下命令:

pm2 start /root/.cargo/bin/sonic -- -c /root/.sonic/config.cfg
pm2 save
1
2

# 配置

# 后端地址配置

进入 HydroOJ 控制面板,配置 sonic 后端地址。

如果您直接复制配置示例,那么按照以下内容配置:

  • host: 127.0.0.1
  • port: 1491
  • auth: SecretPassword

修改完成后,重启 HydroOJ。

# 重启 HydroOJ

执行命令 pm2 restart hydrooj

# 重建题目索引

进入 HydroOJ 控制面板,在脚本管理中找到重建题目索引,点击运行,参数留空即可。

至此,搜索功能应当可以正常使用。

# FAQ

# sonic-server 安装时卡在 librocksdb

考虑换台性能强点的服务器。

# 安装后题目搜索不正常

请更新到 HydroOJ 最新版本后,再运行重建题目索引。