堕落不振功业废,勤耕不辍日月新

Wiki JS 中文搜索

C/C++ hailen 29℃

引子

由于 PostgreSQL 默认没有中文字典,需要使用分词插件来实现中文断词和搜索。否则,只有只能搜索短语或者句子。

为了解决这个问题,使用包含断词插件的 PostgreSQL。我使用 Docker 容器部署,由于没有现成的镜像,只能自己编译。

已经开源,请前往我的 GitHub:
https://github.com/lesca/postgres-jieba

用法

1. 配置容器

version: "3"
services:

  db:
    image: lesca/postgres-jieba
    container_name: wiki_db
    environment:
      POSTGRES_DB: wiki
      POSTGRES_PASSWORD: "xxx"
      POSTGRES_USER: xxx
    logging:
      driver: "none"
    restart: unless-stopped
    volumes:
      - ./dbdata/:/var/lib/postgresql/data

  wiki:
    image: requarks/wiki:2
    container_name: wiki
    depends_on:
      - db
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: xxx
      DB_PASS: "xxx"
      DB_NAME: wiki
    restart: unless-stopped
    ports:
      - "3000:3000"
      - "3443:3443"

  # pgadmin - postgresql database explorer
  # use only if you want to edit the database 
  pgadmin:
    image: dpage/pgadmin4
    container_name: wiki_pgadmin
    depends_on:
      - db
    environment:
      PGADMIN_DEFAULT_EMAIL: xxx@xxx.com
      PGADMIN_DEFAULT_PASSWORD: xxx
    restart: unless-stopped
    ports:
      - "14080:80"

2. 配置 Wiki

  1. 进入 wiki 后台 – 搜索引擎 – 选择“Database – PostgreSQL” – 选择 simple,应用
  2. pgadmin 连接数据库,找到表searchEngines,扎到属性 postgres 将值 {"dictLanguage":"simple"} 改为 {"dictLanguage":"jiebacfg"}
  3. 进入 wiki 后台 – 搜索引擎。这时选项为空,不用管它。点击“重建索引”

注意事项

  1. pgadmin 仅临时用于修改数据库,用完后记得将其关闭(注释掉即可)。
  2. 修改后,引擎配置选项为空,不用管它,可以随时改回去。每次更改都要重新索引。

参考

[1] 我与尼古拉斯的讨论

转载请注明:我是IT » Wiki JS 中文搜索

喜欢 (0)or分享 (0)