misskey icon indicating copy to clipboard operation
misskey copied to clipboard

検索機能をpgroongaに対応させる

Open samunohito opened this issue 1 year ago • 7 comments

Summary

pgroongaに対応し、

  • 既存の組み込み検索
  • Meilisearchを使用しての検索
  • pgroongaを使用しての検索

…を選べるようにします。

Purpose

Meilisearchを採用していないサーバ向けに検索機能増強の選択肢を提供できる

Do you want to implement this feature yourself?

  • [ ] Yes, I will implement this by myself and send a pull request

samunohito avatar Oct 09 '24 04:10 samunohito

(すぐに着手は難しいので、どなたか代わりにやってくれても◎)

samunohito avatar Oct 09 '24 04:10 samunohito

検索、interface的な抽象化をしたうえで実装してどの手段を用いても似たように呼び出して検索できるようにしたい 例えばtypesenceに対応させたいとか、あるいはまた別の検索エンジン使いたいとかそういう需要も出てくるかもしれないので

tai-cha avatar Oct 09 '24 04:10 tai-cha

ElasticsearchやOpenSearchなどもありますし、そちらの方が望ましいですね。

samunohito avatar Oct 09 '24 04:10 samunohito

PGroongaは日本語onlyのソフトかしら

syuilo avatar Oct 09 '24 10:10 syuilo

公式より、

PostgreSQLはアルファベットと数値だけを使った言語の全文検索だけをサポートしています。これは、日本語や中国語などはサポートしていないということです。PGroongaをPostgreSQLにインストールすると全言語対応の超高速全文検索機能を使えるようになります!

とのことです。

samunohito avatar Oct 09 '24 10:10 samunohito

ほむん PostgreSQLは標準でも日本語の全文検索できてるような? PGroongaを使えば全ての言語でより速くなるということかしら

syuilo avatar Oct 09 '24 10:10 syuilo

PostgreSQLは標準でも日本語の全文検索できてるような? PGroongaを使えば全ての言語でより速くなるということかしら

はやくなります。 LIKEではインデックスが効かない(効かせることもできるが限定的)こともあり、膨大な量のテキストデータ検索には不向きです。反面、PGroongaを導入した場合は対象のテキストデータに対してインデックスを作成し、それを用いて検索するので早いです(加えて正確らしい)。

samunohito avatar Oct 09 '24 12:10 samunohito

In a different installation (Soapbox fork of Pleroma) I've added italian full text search extension. Can only give good results against Italian dictionary.

Searching for cucinare, cucinato, cucinerò, cucinai, stems to "cucina" and finds everything.

Could you please test PGroonga against japanese verbs? Searching for 「たべたい」 will it return also 「食べない、食べ、たべる、食べます」etc... ? Is it trained only against asian ideogram language? Or have also other languages dictionaries?

Thank you as usual!

tassoman avatar Feb 06 '25 09:02 tassoman

私も自分のMisskeyサーバにpgroongaをインストールしていますが、「食べたい」で検索しても「食べたい、食べない、食べ、食べる、食べます」のうち「食べたい」しかヒットしませんでした^1。 あまり詳しくないのですが、トークナイザーをカスタマイズすれば「食べたい」以外のものもヒットするのかもしれません(たとえば、MeCabなど)

see: https://pgroonga.github.io/ja/reference/create-index-using-pgroonga.html

samunohito avatar Feb 06 '25 10:02 samunohito