全文検索のメンテナンスですが、終盤に入りました。(でもこれが長い)

新しい投稿が順次検索可能になっていっています。

全文検索は、Elasticsearchという独立した検索サーバを設置して、Mastodon本体と連携をとりながら動作します。

実際には、Elasticsearchが使える場合は、アカウントの検索、ハッシュタグの検索にも用いるように切り替わります。

新しい投稿がされたときや、お気に入りなどリアクションがされたときに、検索に必要な情報をMastodonからElasticsearchに書き込んでいます。

検索する際は、Elasticsearchが結果として投稿のIDを教えてくれるので、そこから必要な投稿データをMastodon側で揃えてユーザーに返します。

今回のように過去データをリセットした場合、Elasticsearchに書き込まれていないデータが大量に出てきます。

Mastodonにはメンテナンスコマンドでこれをまとめて反映する機能があるので、現在それを実行中です。これにはかなりの時間がかかります。

Fedibirdでは最新投稿からこれを反映していくようにしているので、だんだん古い投稿がみられるようになっていきます。

フォロー

今回のElasticsearch側のメンテナンスは、インデックス内容の変更に伴うデータ刷新と、形態素解析器をKuromojiからSudachiに切り替える作業を行いました。

インデックス(ここでは全文検索用のデータをデータベースに保存すること)する内容は、後ほど検索オプションを提供するための仕込みで、いろいろと増やしています。

形態素解析器の切り替えは、単語の間に空白を設けない日本語の文章を分析して切り分けるための仕組みが変わるということで、sudachiはその基礎となる辞書が大きいこと、分割が検索に適していることから、検索精度にも影響してくる変更です。

とはいえ、口語調であったり、短い文章が多かったり、辞書にない言葉が使われているなど、うまく分割できないことも多いので、検索の際は " " で囲う方法も覚えておいてください。

たとえば『将棋』と検索しても、『将来』とか『大将』が検索結果にでてきてしまいますが、これを "将棋" と指定するとそのままの表現で検索するので、より目的にかないます。

通常の検索は表記揺れに強い(多少表現が違ってもヒットする)反面、余計なものを結果に出す欠点があるということで、うまく使い分けてください。

さて、今回、重要な仕様変更があります。

・Misskeyの投稿を公開の検索対象に変更した

・プロフィール説明文へ特定文字を記載することで、Fedibirdでの検索範囲を指定可能にした

Misskeyの投稿は、Misskeyの仕様により、公開範囲がパブリックおよびホームの投稿がすべて検索の対象になります。

Fedibird側ではこれまで、リモートサーバの種別を保持していなかったこともありますが、すべてMastodonの基準で対応していました。今回これをMisskeyの仕様に準じ、検索の対象とすることにしました。

Misskeyの仕様についてはGithub Issueにて確認をとっていますので、合わせて確認されると良いと思います。
github.com/misskey-dev/misskey

Misskeyのアカウントについても、個々のアカウント単位で検索範囲を制限することができます。(次の投稿を確認ください)

従来より検索結果が非常に多くなりますので、状況によっては検索範囲を狭くして使われた方が良いかもしれません。

フォローしてる人までにしたり、通常のMastodon同様、自分とリアクションした相手だけにすることもできます。

(長くなったので続く)

さて、自分の投稿の検索範囲の指定方法です。

プロフィール説明文への特定キーワード記載で、Fedibird側が認識します。


誰でも検索できる


フォロワーが検索できる


リアクションした人だけ検索できる(Mastodon標準)

プロフィール説明文が記載できる実装であれば、通常のMastodonでも、Misskeyでも、PleromaやAkkomaでも、Fedibirdのネイティブ指定と同様の効果となります。

自分の投稿をより広い範囲で検索して見つけて欲しい人は、記載しておくことをお勧めします。

まだFedibirdでしか効果がありませんが、明示しれあれば、他の実装で拾ってくれるようになるかもしれません。

また、Misskeyの方で、検索されたくない場合も、この記載をしておくことをお勧めします。

この記載はMisskeyには効果がないので、引き続きあなたの投稿は検索対象になりますが、指定する人が多ければ、Misskeyの検索範囲の見直しの切っ掛けになるかもしれません。

以下、余談です。

実のところ、あまりプロフィールにキーワード記載という方法を普及させたくはないのですが、他にうまくこれを指定して連合させる方法がないため、今回思い切って導入に踏み切りました。

Fedibirdではこの情報を、アカウント情報のjsonの中で専用のフィールドで持たせています。これを普及させたいところですが、なかなか難しいのです。

プロフィール記載だと、たとえばPixelfedやPeerTubeのような実装、WordPressのActivityPub対応プラグインなどでも、Fedibirdから検索されやすいようにすることができるなど、まあ柔軟性の面では強いのです。

投稿の個別の検索範囲設定は、このプロフィール記載やfedibirdネイティブの検索範囲設定よりも優先されますか?

優先されます。

あくまでアカウントに設定するものはデフォルト値で、投稿に指定する際の初期値として使われるだけです。

If there's something that can also be addressed for this by Firefish, I would love an issue on our repo to discuss.

Firefish welcomes the ability for users to explicitly declare the search scope of their posts.

There are two ways to do this: by default, per account, or per post.

I will summarize Fedibird's specifications later.

Incorporating this feature will have no impact on implementations that ignore it. However, by carefully nurturing this feature ourselves, we can provide a way to implement a consensus search service on Fediverse for Fediverse search engines and new services considering full-text search.

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。