ノート検索

Misskeyにはノートの検索機能があります。有効化することで、ノートの検索ができるようになります。

ヒント

検索機能はデフォルトで無効となっています。 利用する場合は、ロールの「ノート検索の利用」を有効にしてください。

サポートしている検索エンジン

Misskeyはノート検索に使用するアルゴリズムを複数ご用意しています。サーバーの規模やニーズに応じて切り替えることができます。

  • sqlLike ... PostgreSQLの標準機能を用いて検索を行います。(デフォルト)
    • データベース組み込みの機能を使用するためお手軽です。
    • データの量が増えてくると検索に時間がかかりやすくなります。
  • sqlPgroonga ... 全文検索エンジンのPgroongaを用いて検索を行います。
    • Pgroongaのインストールが必要です。
    • sqlLikeより高速な検索が可能です。
  • meilisearch ... 全文検索エンジンのMeilisearchを用いて検索を行います。
    • Meilisearchのインストールが必要です。
    • sqlLikeより高速な検索が可能です。
    • 検索対象のノートは、公開範囲が「パブリック」または「ホーム」です。フォロワー限定投稿も含めたい場合はsqlLikeまたはsqlPgroongaを使用する必要があります。

検索エンジンを変更する場合は、設定ファイルの fulltextSearchprovider を書き換えて、Misskeyのプロセスを再起動してください。

Pgroongaを使う

Pgroongaのインストール

注意

作業前にデータベースのバックアップをおすすめします。
また、Misskeyを停止してから作業を開始してください。

Ubuntu 22.04、PostgreSQL 15の環境にPgroongaをインストールする例です。

詳細は公式PostgreSQL用のインストール方法をご確認ください。

sudo apt install -y -V ca-certificates lsb-release wget
wget https://packages.groonga.org/ubuntu/groonga-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./groonga-apt-source-latest-$(lsb_release --codename --short).deb
sudo wget -O /usr/share/keyrings/pgdg.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
(echo "Types: deb"; \
   echo "URIs: http://apt.postgresql.org/pub/repos/apt"; \
   echo "Suites: $(lsb_release --codename --short)-pgdg"; \
   echo "Components: main"; \
   echo "Signed-By: /usr/share/keyrings/pgdg.asc") | \
    sudo tee /etc/apt/sources.list.d/pgdg.sources
sudo apt update
sudo apt install -y -V postgresql-15-pgdg-pgroonga

MeCabベースのトークナイザーを使いたい場合は、以下も実行します。

sudo apt install -y -V groonga-tokenizer-mecab

Pgroongaの有効化

次にPostgreSQLにログインします。

sudo -u postgres psql

ログインをしたら、Misskeyのデータベースを選択します。

\c "mk1"

PGroongaを有効化します。

CREATE EXTENSION pgroonga;

PGroonga用のインデックスを作成します。

注意

インデックス作成には時間がかかります。十分な作業時間を確保してください。

CREATE INDEX idx_note_text_with_pgroonga ON note USING pgroonga (text);

完了したら、exit と入力し、Postgresqlからログアウトします。

検索エンジンの変更

Misskeyの設定ファイルを編集します。
fulltextSearchsqlPgroonga に変更してください。

fulltextSearch:
  provider: sqlPgroonga

Misskeyのプロセスを起動し、ノートの検索ができれば完了です。