wiki.js启用中文全文检索

默认的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后台,选择的分词器是空,忽略,重建索引,即可

 

Leave a Reply

Your email address will not be published. Required fields are marked *