支持中文全文搜索的wiki.js

动机

wiki.js功能多,符合当代审美,然而v2.5不支持中文全文搜索。是其数据库postgres(v10)对中文全文搜索缺乏支持所致。所以改用带 zhparser 插件的 postgres数据库。

官网已有部署教程。网上已有使用带 zhparser 插件的 postgres数据库,以支持中文全文搜索的教程。本文把两者合而为一,并增加了一些细节,如docker容器没有vi,只能使用ed的操作记录。

利用docker安装各组件。

日期:2021-3-29

安装

Update the machine

First, let’s make sure the machine is up to date.

# Fetch latest updates
sudo apt -qqy update

# Install all updates automatically
sudo DEBIAN_FRONTEND=noninteractive apt-get -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade

Install Docker

# Install dependencies to install Docker
sudo apt -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' install apt-transport-https ca-certificates curl gnupg-agent software-properties-common openssl

# Register Docker package registry
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# Refresh package udpates and install Docker
sudo apt -qqy update
sudo apt -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold

Containers Prepare

# Create installation directory for Wiki.js
mkdir -p /etc/wiki

# Generate DB secret
openssl rand -base64 32 > /etc/wiki/.db-secret

# Create internal docker network
docker network create wikinet

# Create data volume for PostgreSQL
docker volume create pgdata

Postgresql Container

# Create the containers
# -e为设置环境变量 -v为从主机向容器中复制
# 拉取镜像,并带参数创建容器
docker create --name=db -e POSTGRES_DB=wiki -e POSTGRES_USER=wiki -e POSTGRES_PASSWORD_FILE=/etc/wiki/.db-secret -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro -v pgdata:/var/lib/postgresql/data --restart=unless-stopped -h db --network=wikinet -p 5432:5432 chenxinaz/zhparser

# 运行容器
docker start db
# 进入容器
docker exec -it db bash

su - postgres
psql

# 生成用户,数据库,给用户管理员权限(创建插件用)
CREATE USER wiki WITH PASSWORD 'wiki';
CREATE DATABASE wiki OWNER wiki;
GRANT ALL PRIVILEGES ON DATABASE wiki to wiki;
ALTER USER wiki WITH SUPERUSER;

# 退出 session,重新连入 wiki数据库,设置中文全文检索
\q
psql -U wiki -d wiki

CREATE EXTENSION pg_trgm;

CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION pg_catalog.chinese_zh (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION chinese_zh ADD MAPPING FOR n,v,a,i,e,l WITH simple;

# [二、PostgerSQL全文检索系统之中文支持_jjj的博客-CSDN博客](https://blog.csdn.net/weixin_40746796/article/details/89209316)
# 忽略标点影响
ALTER ROLE wiki SET zhparser.punctuation_ignore = ON;
# 短词复合
ALTER ROLE wiki SET zhparser.multi_short = ON;

# 看看 chinese_zh 在不在
\dF
# 测试一下
select ts_debug('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');

# 退出 session,重新连入 postgres 数据库,关闭 wiki的 superuser权限
\q
psql -U postgres -d postgres
ALTER USER wiki WITH NOSUPERUSER;
# 退出该容器
\q
exit
exit

Wiki Container

# 在参数里设置端口
docker create --name=wiki -e DB_TYPE=postgres -e DB_HOST=db -e DB_PORT=5432 -e DB_PASS_FILE=/etc/wiki/.db-secret -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro -e DB_USER=wiki -e DB_NAME=wiki -e UPGRADE_COMPANION=1 --restart=unless-stopped -h wiki --network=wikinet -p 80:3000 -p 443:3443 requarks/wiki:2

# 进入容器 console
docker start wiki
docker exec -it wiki bash
# 将 /wiki/server/modules/search/postgres/definition.yml 中的 enum list 添加一个元素 chinese_zh
ed /wiki/server/modules/search/postgres/definition.yml

enum:
      ...
      - turkish
      - chinese_zh
# ed的相关操作
a #进入插入模式
      - chinese_zh
. #返回命令模式
w #保存
q #退出

重启wiki容器,打开 wiki.js 管理 | 搜索引擎 | Database - PostgreSQL | Dictionary Language 选 chinese_zh

在这里插入图片描述

修改 wiki 中的表 searchEngines 中的 row,将 dictLanguage 改为 chinese_zh,具体如下:(我的版本已经有这个了,不需要这步)

在这里插入图片描述

docker exec -it bd bash

su - postgres
psql

\d wiki
(本来想写的,发现不用了)

改好后在入口试试全文检索吧,enjoy!

(下面的不配置,也可使用了)

用于自动更新的容器组件

docker create --name=wiki-update-companion -v /var/run/docker.sock:/var/run/docker.sock:ro --restart=unless-stopped -h wiki-update-companion --network=wikinet requarks/wiki-update-companion:latest

Setup Firewall

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

sudo ufw --force enable

Start the containers

docker start db
docker start wiki
docker start wiki-update-companion

参考文献

https://docs.requarks.io/install/ubuntu

https://zhuanlan.zhihu.com/p/335359081

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值