您的足迹: zh-search

官方现已支持配置中文

这是本文档旧的修订版!


Pleroma 配置中文搜索的思路(未验证)

注意!本页面只是记录配置的可能思路,完全没有验证过思路的可行性!请谨慎考量!请谨慎考量!请谨慎考量!

(请做好备份!请做好备份!请做好备份!)

Pleroma 搜索系统

Pleroma 搜索系统使用的是 postgresql 的全文搜索,并且似乎在数据表格中建立了一个索引列用来方便查找。

Postgresql 的全文搜索很重要的是 parser 以及 text search config ,其默认使用 english 作为搜索配置(Pleroma 也是默认 english),这也就很容易理解为什么这中文搜索这么烂了。

但其实其它自带的搜索配置全都不支持中文,所以我们要使用额外的配置。

另外,因为 pleroma 建立了一个索引列,所以我们是不能够在安装了 pleroma 之后再更改搜索配置的。但是有可能通过“备份 pleroma—配置搜索—恢复 pleroma 备份”来实现更改配置。

全新安装的配置思路

如果您使用的是官方的 Pleroma OTP 安装教程,则应在:su postgres -s $SHELL -lc “psql -f /tmp/setup_db.psql” 这一步之后,在 su pleroma -s $SHELL -lc “./bin/pleroma_ctl migrate” 这一步之前,进行 pg_jieba 的配置。

具体流程

还是说一下吧。 在跟着 Installing Pleroma 安装时,进行到这一步 Installing Pleroma 要输一大堆命令时,注意,输到这一行时:

# Create the postgres database
su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql"

停下来。(准确来说是输完后执行完后停下来。)

先不要输下一行命令。(这个时候您的下一行命令应该是:

# Create the database schema
su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"

不要输这一行命令,我们先开始配置中文搜索。

安装 pg_jiebajaiminpan/pg_jieba 在 Ubuntu 上的安装方法是:(请先用 psql –version 找到版本号,比如 psql (PostgreSQL) 12.5 版本号就是 12

  • sudo apt install postgresql-server-dev-版本号 gcc g++ cmake make
  • cd pg_jieba
  • git submodule update –init –recursive
  • mkdir build
  • cd build
  • cmake ..
  • make
  • sudo make install
  • sudo systemctl restart postgresql

安装好后: 按下面命令把 english 配置替换为 pg_jieba 的配置:先进入 postgresql 管理员控制台:

sudo -Hu postgres psql

在 postgresql 控制台分别:进入 pleroma 数据库,创建 pg_jieba 相关配置,删除 english 配置,把 jiebaqry 复制成新的 english,最后 \q 退出:

\c pleroma;
CREATE EXTENSION pg_jieba;
DROP TEXT SEARCH CONFIGURATION english;
CREATE TEXT SEARCH CONFIGURATION english(COPY=jiebaqry);
\q

这个时候您就可以接着进行原有的安装了。(整体上也就是:

# Create the postgres database
su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql"

<---------------------------------------- 我们这里插进了我们中文搜索的配置,
<---------------------------------------- 其它安装命令不变

# Create the database schema
su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"

已有安装的配置思路

综上所述,大概的思路如下:

一、备份 pleroma

二、重装 pleroma,但不恢复数据

三、配置搜索配置

数据库也重建一下,用来把索引列清掉。

sudo -Hu postgres psql -c 'DROP DATABASE <pleroma_db>;';
sudo -Hu postgres psql -c 'CREATE DATABASE <pleroma_db>;';

安装配置 ''pg_jieba''

安装 pg_jiebajaiminpan/pg_jieba

  • pg_jieba 在 Ubuntu 上需要安装 postgresql-server-dev-版本号 gcc g++ cmake make
  • 不要忘记重启 postgresql: sudo systemctl restart postgresql

english 配置替换为 pg_jieba 的配置:先进入 postgresql 控制台:

sudo -Hu postgres psql

在 postgresql 控制台分别:进入 pleroma 数据库,删除 english 配置,把 jiebaqry 复制成新的 english

\c pleroma;
CREATE EXTENSION pg_jieba;
DROP TEXT SEARCH CONFIGURATION english;
CREATE TEXT SEARCH CONFIGURATION english(COPY=jiebaqry);
\q

四、恢复 pleroma 数据