默认的postgre是没有中文分词的,网上有一些带分词的打包版的docker镜像,我用的是zhparser的,可以替换,修改后的compose文件如下:
services:
db:
image: abcfy2/zhparser:17-alpine
environment:
POSTGRES_DB: wiki
POSTGRES_PASSWORD: wikijsrocks
POSTGRES_USER: wikijs
logging:
driver: none
restart: unless-stopped
volumes:
- /your_path/wiki_postgres:/var/lib/postgresql/data
wiki:
image: ghcr.io/requarks/wiki:2
depends_on:
- db
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wikijs
DB_PASS: wikijsrocks
DB_NAME: wiki
restart: unless-stopped
ports:
- "8080:3000"
启动
podman-compose up
会自动给新建的库加上插件,安装后 还需要在wiki.js后台做配置,首先选择simple分词器,保存
然后连接pg数据库,查看分词是否已配置
docker exec -it wiki_js_db_1 /bin/bash psql -h 127.0.0.1 -p 5432 -U wikijs -d wiki
设置db默认搜索为中文分词配置
这一步很重要!网上的教程基本都没有这个步骤,导致实际没有生效~
# show SHOW default_text_search_config; default_text_search_config ---------------------------- pg_catalog.english # change ALTER DATABASE wiki SET default_text_search_config = 'chinese_zh'; # reconn & show again SHOW default_text_search_config; default_text_search_config ---------------------------- public.chinese_zh
修改wiki.js的配置
\dt
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+--------
public | analytics | table | wikijs
public | apiKeys | table | wikijs
public | assetData | table | wikijs
public | assetFolders | table | wikijs
public | assets | table | wikijs
public | authentication | table | wikijs
public | brute | table | wikijs
public | commentProviders | table | wikijs
public | comments | table | wikijs
public | editors | table | wikijs
public | groups | table | wikijs
public | locales | table | wikijs
public | loggers | table | wikijs
public | migrations | table | wikijs
public | migrations_lock | table | wikijs
public | navigation | table | wikijs
public | pageHistory | table | wikijs
public | pageHistoryTags | table | wikijs
public | pageLinks | table | wikijs
public | pageTags | table | wikijs
public | pageTree | table | wikijs
public | pages | table | wikijs
public | pagesVector | table | wikijs
public | pagesWords | table | wikijs
public | renderers | table | wikijs
public | searchEngines | table | wikijs
public | sessions | table | wikijs
public | settings | table | wikijs
public | storage | table | wikijs
public | tags | table | wikijs
public | userAvatars | table | wikijs
public | userGroups | table | wikijs
public | userKeys | table | wikijs
public | users | table | wikijs
select * from "searchEngines";
key | isEnabled | config
---------------+-----------+------------------------------------------------------------------------------------------------------------------------------------------------------------
aws | f | {"domain":"","endpoint":"","region":"us-east-1","accessKeyId":"","secretAccessKey":"","AnalysisSchemeLang":"en"}
algolia | f | {"appId":"","apiKey":"","indexName":"wiki"}
azure | f | {"serviceName":"","adminKey":"","indexName":"wiki"}
db | f | {}
postgres | t | {"dictLanguage":"simple"}
elasticsearch | f | {"apiVersion":"7.x","hosts":"","verifyTLSCertificate":true,"tlsCertPath":"","indexName":"wiki","analyzer":"simple","sniffOnStart":false,"sniffInterval":0}
manticore | f | {}
solr | f | {"host":"solr","port":8983,"core":"wiki","protocol":"http"}
sphinx | f | {}
update "searchEngines" set "config" = '{"dictLanguage":"chinese_zh"}' where "key" = 'postgres';
回到wiki.js后台,选择的分词器是空,忽略,重建索引,即可