Groonga
PGroongaで踊り字の有無を無視して検索する方法
PostgreSQLで高速に全文検索するための拡張PGroongaの開発をしている堀本です。
突然ですが、日本語には踊り字というものがあります。久々の"々"とか、こゝろの"ゝ"とか、前の文字を繰り返す記号のことです。現代の文書でも見かけますが、古い文書でも多用されています。
「久々」は、「久々」と検索しそうですが、「こゝろ」は「こころ」で検索したくなります。このような表記ゆれを統一して検索したいというのは、よくある問題です。
最近よく聞くセマンティックサーチもこの問題を解決するための一つの手段ですが、正規化するというのも一つの解決手段です。
少し前にGroonga(PGroongaのバックエンドで動いている全文検索エンジン)に踊り字を正規化する機能を追加したので、PGroongaでそれを使う方法を紹介します。
Mroonga 15.21 リリース!
MySQL, MariaDB, Percona Serverで高速に全文検索するためのストレージエンジンMroongaのメンテナンスをしている堀本です。
Mroonga 15.21をリリースしました!直近のリリースが2025-09-30なので、2ヶ月ぶりのリリースです。
今回のリリースでは、Debian 13とMariaDB 11.8を新たにサポートしました。Debian 13は2025-08-09に、MariaDB 11.8は2025-06-08にリリースされました。Debian 13は数ヶ月、MariaDB 11.8に至ってはサポートに半年かかってしまいました。。。
がんばってサポートしたので、この記事では、Debian 13とMariaDB 11.8のサポートに時間がかかった理由を紹介しようと思います。
PostgreSQL Conference Japan 2025:PostgreSQLでのセマンティックサーチへの挑戦 #pgcon25j
PostgreSQL Conference Japan 2025に参加して、「PostgreSQLでのセマンティックサーチへの挑戦」というタイトルで発表をした堀本と阿部です。
スライドを公開しましたが、補足・解説テキストを追加した記事も残します。
Groongaでのセマンティックサーチの実装
Groongaの開発をしている須藤です。Groongaはもともとキーワードベースの全文検索機能を提供する全文検索エンジンとして開発されましたが、このご時世なので、セマンティックサーチサポートも拡充しています。この記事では現状のGroongaのセマンティックサーチのサポート度合いを紹介します。
Redmine全文検索プラグインの全機能紹介!(2025年版)
Redmine全文検索プラグインに「クエリー展開」なる機能があることを先ほど知った阿部です。
ということで、全文検索プラグインにどのような機能があるのか知りたい方向けに網羅的な機能説明から構成までを紹介するのが本記事です。
(弊社のブログでも何度か紹介されている全文検索プラグインですが、機能の網羅的説明や構成の全体像を説明している記事はないので改めて説明します。)
Groongaサポートサービスの事例紹介 - Groongaのバージョンアップ
Groongaのサポートサービスを担当している阿部です。
Groongaのバージョンアップをサポートした事例を紹介します。
ハンズオン: Redmine環境に高速な全文検索プラグインを導入してみよう(PostgreSQL編)
Redmineを高速全文検索するプラグインの開発に参加している児玉です。ククログではこれまで何度かこのプラグインについてご紹介してきましたが、今回はDebian/Ubuntu向けハンズオン形式で「手を動かして」実際に導入するまでを紹介します!(他のOSをお使いの場合は、適宜コマンドやリポジトリ登録方法を読み替えて進めてください。)
SQLで理解する!Groongaのドリルダウン入門
select max(_id) from table; なことをGroongaでしたい阿部です。
冒頭から余談です。SQLは大文字で書く方がよくある書き方なんですが、小文字で書く派もそれなりいて私は小文字で書くのが好きです。大文字で書くのがめんどくさいからです。ということで、本記事ではSQLは小文字で書きます。
閑話休題。
Groongaは集計もできます。ただちょっとややこしいので、SQLで書くとこんな感じになりますよ、ということを示して世に多いであろうSQL好きにGroongaをPRするための記事です。
PGroongaでGroongaのリソースを確認する(n_buffer_segmentsの値)
PostgreSQLのautovacuumと格闘中の阿部です。
(という出だしで始めましたが本記事ではPostgreSQLのautovacuumについては触れないので、興味があれば公式ドキュメントをご覧ください。)
今回はPGroongaからGroongaのリソースを確認する方法を紹介します。
PGroongaはインデックスとしてGroongaを使うPostgreSQLの拡張機能です。PostgreSQLにてお手軽にゼロETLで全言語対応の超高速全文検索機能を使えるようになりますが、より専門的なチューニングなどをする場合は内部で利用しているGroongaの状況も確認する必要があります。
今回はその一例としてGroongaのn_buffer_segmentsの値を確認する方法を紹介します。
Groonga用のMariaDBのutf8mb4_uca1400照合順序互換ノーマライザー
Mroongaの開発をしている須藤です。MroongaはMySQL/MariaDB/Percona Serverからいい感じにGroongaを使えるようにするストレージエンジンです。Groongaは全文検索エンジンなので、MySQL/MariaDB/Percona Serverだけで(ゼロETLで!っていうとナウいんでしょ!?)Elasticsearchとかなしにいい感じに高速高機能全文検索機能を実現できます。
そんなMroongaは10年くらい前からMariaDBにバンドルされています。MySQL・MariaDB作者のMontyさんがなんかの日本のイベントに来ていたときになんか話して「バンドルするか!」みたいな流れになったような気もするし、それとは別のところでなんやかんやしたような気もして、よく覚えていないのですが、バンドルされています。
なんだろう、思い出せないーと思ってインターネットを漁ってみたら、2014年のMyNA会で使った「MariaDBにバンドルされていないMroonga」になんか関連情報がありますね。歴史に興味がある人は眺めてみてね。
まぁ、そんなMroongaですが、MariaDBにバンドルされているMroongaの更新が大変で全然更新できていません。でも、それはまずいよねぇということでまた数年ぶりにチャレンジしています。で、今回はMroongaのコピーをMariaDBに入れるんじゃなくて、git submoduleでMroongaを入れようとしています。コピーだと、MariaDBが持っているMroongaの方にだけ最新MariaDBの対応が入って、本家のMroongaでは気づかずに「あれー新しいMariaDBでビルドできなくなってるー」みたいなことになるからです。
だいぶ前置きが長くなりましたが、MariaDBにバンドルするMroongaを更新するために、最新のMariaDBでも動くようにする作業をしています。