差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
pleroma:zh-search [2021/01/18 02:56]
shykana fresh ins
pleroma:zh-search [2021/08/16 07:10] (当前版本)
shykana
行 1: 行 1:
-====== Pleroma 配置中文搜索的思路(未验证) ======+====== 官方现已支持配置中文 ======
  
-**注意!本页面只是记录配置的可能思路,完全没有验证过思路的可行性!请谨慎考量!请谨慎考量!请谨慎考量!**+====== 官方现已支持配置中文 ====== 
 + 
 +请查看官方的文档,这里的思路不再探索。 [[https://docs-develop.pleroma.social/backend/configuration/howto_search_cjk/|官方的配置中日韩文字搜索的文档]] 
 + 
 +====== 官方现已支持配置中文 ====== 
 + 
 +====== 官方现已支持配置中文 ====== 
 + 
 +====== 官方现已支持配置中文 ====== 
 + 
 +== Pleroma 配置中文搜索的思路(未验证) == 
 + 
 +**注意!已经有开发者在给官方的 Pleroma 添加这样的其它语言的搜索功能。所以最好还是等待官方支持。 [[https://git.pleroma.social/pleroma/pleroma/-/merge_requests/3275|allow user defined text search config in database (!3275)]]** 
 + 
 +**本页面只是记录配置的可能思路,完全没有验证过思路的可行性!请谨慎考量!请谨慎考量!请谨慎考量!** 
 + 
 +**因为这个思路目前还没走通。这部分内容可能需要操作者对 postgresql 有相当的熟悉度才能进行。**
  
 **(请做好备份!请做好备份!请做好备份!)** **(请做好备份!请做好备份!请做好备份!)**
 +
 +**另外,动了搜索配置后,Pleroma 的备份以及恢复可能会有更多的问题。但因我的实例并不是全新安装,没有成功配置,所以此处可能不能继续尝试解决方案。这方面也请谨慎考量。请谨慎考量。请谨慎考量。**
 +**在尝试时,最好也尝试配置完中文搜索后,再进行备份,再尝试恢复新备份。因为新的备份包含中文搜索的信息,所以恢复时可能也需要额外配置。我没能尝试这部分的操作。个人建议是将这些后续操作都尝试确定无误后再到真正的日用服务器上应用。**
  
 ===== Pleroma 搜索系统 ===== ===== Pleroma 搜索系统 =====
行 18: 行 37:
  
 如果您使用的是官方的 [[https://docs-develop.pleroma.social/backend/installation/otp_en/|Pleroma OTP]] 安装教程,则应在:''su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql"'' 这一步之后,在 ''su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"'' 这一步之前,进行 ''pg_jieba'' 的配置。 如果您使用的是官方的 [[https://docs-develop.pleroma.social/backend/installation/otp_en/|Pleroma OTP]] 安装教程,则应在:''su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql"'' 这一步之后,在 ''su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"'' 这一步之前,进行 ''pg_jieba'' 的配置。
 +
 +==== 具体流程 ====
 +
 +还是说一下吧。
 +在跟着 [[https://docs-develop.pleroma.social/backend/installation/otp_en/#installing-pleroma|Installing Pleroma]] 安装时,进行到这一步 [[https://docs-develop.pleroma.social/backend/installation/otp_en/#installing-pleroma|Installing Pleroma]] 要输一大堆命令时,注意,输到这一行时:
 +<code>
 +# Create the postgres database
 +su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql"
 +</code>
 +停下来。(准确来说是输完后执行完后停下来。)
 +
 +先不要输下一行命令。(这个时候您的下一行命令应该是:
 +<code>
 +# Create the database schema
 +su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
 +</code>
 +不要输这一行命令,我们先开始配置中文搜索。
 +
 +安装 ''pg_jieba'': [[https://github.com/jaiminpan/pg_jieba|jaiminpan/pg_jieba]]
 +在 Ubuntu 上的安装方法是:(请先用 <code>psql --version</code> 找到版本号,比如 ''psql (PostgreSQL) 12.5'' 版本号就是 ''12''
 +  * ''sudo apt install postgresql-server-dev-版本号 gcc g++ cmake make''
 +  * ''git clone https://github.com/jaiminpan/pg_jieba''
 +  * ''cd pg_jieba''
 +  * <code>git submodule update --init --recursive</code>
 +  * ''mkdir build''
 +  * ''cd build''
 +  * ''cmake ..''
 +  * ''make''
 +  * ''sudo make install''
 +  * ''sudo systemctl restart postgresql''
 +
 +安装好后:
 +按下面命令把 ''english'' 配置替换为 pg_jieba 的配置:先进入 postgresql 管理员控制台:
 +<code>
 +sudo -Hu postgres psql
 +</code>
 +
 +在 postgresql 控制台分别:进入 pleroma 数据库,创建 ''pg_jieba'' 相关配置,删除 ''english'' 配置,把 ''jiebaqry'' 复制成新的 ''english'',最后 ''\q'' 退出:
 +<code>
 +\c pleroma;
 +CREATE EXTENSION pg_jieba;
 +DROP TEXT SEARCH CONFIGURATION english;
 +CREATE TEXT SEARCH CONFIGURATION english(COPY=jiebaqry);
 +\q
 +</code>
 +
 +这个时候您就可以接着进行原有的安装了。(整体上也就是:
 +<code>
 +# 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"
 +</code>
  
 ===== 已有安装的配置思路 ===== ===== 已有安装的配置思路 =====
  
-综上大概如下+**警告:我之前按这个思路尝试配置时失败了。可能与 ''postgresql'' 本身的一些默认配置以及配置的各种依赖关系有关。<del>炸服务器时</del>尝试时请做好备份。请做好备份。请做好备份。(不仅要备份数据库,还要备份 config.exs 等配置文件,详见 [[https://docs-develop.pleroma.social/backend/administration/backup/|官网教程]] 。)** 
 + 
 +==== 失败的一些笔记 ==== 
 + 
 +姑且在这里放一些失败的尝试,希望能有帮助。(在尝试前还是请做好备份。)(只是尝试的话还是推荐不要用数据过多的服务器否则数据恢复会很慢,要等半天才能知道到底是否出错了。) 
 + 
 +一般来说出错都是在恢复数据时出错,可以通过: 
 +<code> 
 +sudo -Hu postgres psql -c 'DROP DATABASE <pleroma_db>;'; 
 +sudo su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql" 
 +</code> 
 +来清除对数据库做更改。 
 + 
 +我当时的一个尝试是修改 postgresql 的默认搜索配置,在 ''/etc/postgresql/12/main/postgresql.conf'' 或其它径的配置文件中找到 ''default_text_search_config'' 一项,修改为 
 +<code> 
 +default_text_search_config = 'public.jiebaqry' 
 +</code> 
 +这个在当时似乎可以让数据的恢复进度增加,但是在之后又会遇到新的出错。 
 + 
 +我当时因为配置有点问题(我在备份前就修改了数据库),所以会有额外出错。(这也是我认为中文搜索配置会让数据的备份和恢复变得困难的原因。)这个应该大家大概率不会用到,但是说不定在配置中文搜索后的备份和恢复时需要用到。这个时候可以使用备份数据的 ''目录(Table of Contents)'' 来达到跳过出错语句的目的。可以参考 [[https://stackoverflow.com/a/39831653|https://stackoverflow.com/a/39831653]] 。请在确认出错语句不包含必要信息后再操作。
  
 ==== 一、备份 pleroma ==== ==== 一、备份 pleroma ====
行 33: 行 128:
 ==== 三、配置搜索配置 ==== ==== 三、配置搜索配置 ====
  
-数据库也重建一下,用来把索引列清掉。+数据库也重建一下,用来把索引列清掉。(按官方教程重装时应该会有一个 ''/tmp/setup_db.psql'' 的文件,需要使用这个文件。)
 <code> <code>
 sudo -Hu postgres psql -c 'DROP DATABASE <pleroma_db>;'; sudo -Hu postgres psql -c 'DROP DATABASE <pleroma_db>;';
-sudo -Hu postgres psql -c 'CREATE DATABASE <pleroma_db>;';+sudo su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql"
 </code> </code>