公式のドキュメントがちょっと不親切だと思ったので。
公式によるとtsjaという日本語用のパーサーがあるらしいですが、メンテナンスされていないということでpg_cjk_parserを使用します。
pg_cjk_parserのインストール
まずはsudo
なりdoas
なりへのアクセスがある作業用ユーザーからの作業。
以下はdoas
で進めます。sudo
環境は適宜読み替えてください。
また、MakefileがGNU make用のようなので、*BSDではgmakeをインストールの上make
をgmake
に読み替えてください。
git clone https://github.com/huangjimmy/pg_cjk_parser.git
cd pg_cjk_parser
make clean
doas make USE_PGXS=1 install
pg_cjk_parserのセットアップ
つづいてPostgreSQLの操作権限のあるユーザーからの作業です。通常は前のステップと同じユーザーで良いでしょう。
以下、PostgreSQLの管理者ユーザーをpostgres
、Pleroma用のデータベースをpleroma
として進めます。
psql -U postgres pleroma
CREATE EXTENSION pg_cjk_parser;
CREATE TEXT SEARCH PARSER public.pg_cjk_parser (
START = prsd2_cjk_start,
GETTOKEN = prsd2_cjk_nexttoken,
END = prsd2_cjk_end,
LEXTYPES = prsd2_cjk_lextype,
HEADLINE = prsd2_cjk_headline);
CREATE TEXT SEARCH CONFIGURATION public.config_2_gram_cjk (
PARSER = pg_cjk_parser
);
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR asciihword
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR cjk
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR email
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR asciiword
WITH english_stem;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR entity
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR file
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR float
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR host
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR hword
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR hword_asciipart
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR hword_numpart
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR hword_part
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR int
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR numhword
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR numword
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR protocol
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR sfloat
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR tag
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR uint
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR url
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR url_path
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR version
WITH simple;
ALTER TEXT SEARCH CONFIGURATION public.config_2_gram_cjk
ADD MAPPING FOR word
WITH simple;
終わったら\q
で抜けてください。
Pleromaの設定
まずはPleromaを一度シャットダウンします。SystemDなりOpenRCなりFreeBSD rcなりで終了コマンドを打ってください。
次にPleromaを動かすユーザーに切り替え、以下のコマンドを発行します。
OTP版かソースビルド版かで実行コマンドが変わります。
OTP版
./bin/pleroma_ctl database set_text_search_config public.config_2_gram_cjk
ソースビルド版
MIX_ENV=prod mix pleroma.database set_text_search_config public.config_2_gram_cjk
おわり
Pleromaを再起動してください。これでいいかんじな日本語検索ができます。お疲れ様でした。