SyoBoN's Home


Pleromaの日本語検索をいいかんじにする

公式のドキュメントがちょっと不親切だと思ったので。

公式によるとtsjaという日本語用のパーサーがあるらしいですが、メンテナンスされていないということでpg_cjk_parserを使用します。

pg_cjk_parserのインストール

まずはsudoなりdoasなりへのアクセスがある作業用ユーザーからの作業。

以下はdoasで進めます。sudo環境は適宜読み替えてください。

また、MakefileがGNU make用のようなので、*BSDではgmakeをインストールの上makegmakeに読み替えてください。

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を再起動してください。これでいいかんじな日本語検索ができます。お疲れ様でした。

CC BY-SA

このサイト上の文章はCC BY-SAライセンスの下公開されています。

© SyoBoN Some rights reserved.