Groonga

Mroongaでgrn_p()を利用する方法

最近、Mroongaの開発をしている児玉です。

Mroongaを開発する中で特定のオブジェクトの中身をデバッグしたい状況になりました。 そんな時に、便利なのがGroongaのオブジェクトの状態を標準出力に表示するgrn_p()です。

しかし、grn_p()を使ってターミナル上にオブジェクトの状態を表示しようとしたところ、 うまく表示されませんでした。どうやら標準出力が別の場所に向けられているようです。

今回この問題を解決し、grn_p()で快適にMroongaをデバッグできるようになったので、 その方法を紹介します!

この記事が、Mroongaのデバッグをしたい方の参考になれば幸いです。 MroongaはMySQLやMariaDBと組み合わせて利用できますが、今回はMariaDBを例に説明します。 (Mroongaに限らず、標準出力先がどこか分からずに困っている方にも役立つかもしれません。)

もっと読む

PostgreSQLがPGroongaのインデックスを使ってくれないときのチェックポイント

こんにちは、PGroongaの開発やサポートをしている堀本です。

この記事では、PGroongaのインデックスを設定しているにも関わらず、 シーケンシャルサーチで検索が実行されてしまう時に確認すべきポイントを紹介します。

PGroongaはPostgreSQLで高速に全文検索するための拡張ですが、 PGroongaのインデックスを設定しているのに、検索が速くならないことがあります。

色々な原因が考えられるのですが、よくあるケースとしては PostgreSQLがPGroongaのインデックスを使用せず、シーケンシャルサーチで検索が実行されていているケースです。

以下では、なぜシーケンシャルサーチが選択されるのか、PGroongaのインデックスを選択して 検索を実行するにはどうしたらいいかを解説します。

最初に、シーケンシャルサーチで検索が実行されているかどうかを確認します。 その後に、シーケンシャルサーチで検索が実行される原因とその解決方法を4つ記載します。

もっと読む

GroongaでANN検索(HNSWアルゴリズム)への道2: USearchに入門と調査

USearchに入門中の阿部です。

入門することにした経緯などはUSearchに入門する準備をご覧ください。

ということで、前回に入門する準備をしたので今回は入門したいと思います。

記事に登場するコード例はmain-devブランチの113a7862f80bf2eb347c559da8487c4be05a5cc4時点のコードを利用しています。

もっと読む

GroongaのDebianパッケージをビルドする仕組み

GroongaのDebianパッケージについてお勉強中の児玉です。

Groongaでは、Debian向けのパッケージを作成し、そのメンテナンスを行っています。 その中で、「GroongaのDebianパッケージはどのようにビルドされているのだろう?」と気になったので、少し深掘りしてみました。 今回は、Debianパッケージの全体的なビルドフローの詳細には触れず、GroongaのDebianパッケージをメンテナンスする過程で学んだこと、 そして理解しておくべき重要なポイントに絞って紹介します。

より詳しい情報を知りたい方は、Groongaのdebian/を眺めてみる会をぜひご覧ください。 Debian Developerである林さんが詳細に解説しており、非常に参考になります。 この記事内でも関連する動画へのリンクを随時ご紹介しますので併せてご活用ください。

もっと読む

GroongaでANN検索(HNSWアルゴリズム)への道1: USearchに入門する準備

USearchに入門中の阿部です。

何のために入門しているかというとGroongaでHNSWアルゴリズムのANN検索をするためです。 そのためにUSearchを活用しようという魂胆です。

Groonga開発者に聞け!(グルカイ!)第70回Groonga開発者に聞け!(グルカイ!)第71回でより詳しい全体像を説明をしているので合わせてご覧ください。

この数行の中にも専門用語が何個か登場しました。用語がわからないことには何も始まらないので、用語のとても簡単な説明とUSearchに入門するためにやったことのまとめ記事です。

理解が深まったタイミングなど、区切りごとに記事にしていくので乞うご期待!

もっと読む

PGroongaをデバッグするときの便利コマンド

PGroongaをデバッグ中の阿部です。

PGroongaはPostgreSQLの拡張機能です。つまりPGroongaのデバッグをするとなったらPostgreSQLを起動する必要があります。

デバッグの際は不要なデータや不要な設定がない、起動したてのPostgreSQLで実施したくなります。 不要データや設定があるとそれによって挙動が変わってしまい、スムーズなデバッグができないことが多いためです。

ということで、今回は不要データや設定のない起動したてのPostgreSQLを手に入れる便利コマンドを紹介します。

PostgreSQLの拡張機能を開発中の方や、デバッグと同様に不要なデータがない方がよいPostgreSQLが関係するテストを 実施したい方の参考になると思います。

もっと読む

GroongaのNormalizerNFKC*ノーマライザーにオプションを追加する(ステートレス編)

Groongaのノーマライザーについてお勉強中の児玉です。

今回は、GroongaのNormalizerNFKC*ノーマライザーに新しいオプションを追加した際の手順についてお話しします。 はじめてこの作業に取り組んだとき、どこから手をつけるべきか悩みました。 そこで、同じようにノーマライザーにオプションを追加したいと考えている方に向けて、私が学んだことをもとにその方法を紹介します!

Groonga開発者に聞け!(グルカイ!)第68回でも解説しているので、あわせてご覧ください!

もっと読む

Groongaのノーマライザーへ機能追加する方針について

Groongaのノーマライザーについてお勉強中の児玉です。

先日、Groongaのノーマライザーに新しい機能を追加しました。その際、最初はどのように進めるべきか悩みました。 そこで、ノーマライザーに機能を追加したいと考えている方へ、私が学んだことをもとに機能追加の方針を紹介します!

Groonga開発者に聞け!(グルカイ!)第68回でも解説しているので、あわせてご覧ください!

もっと読む

PGroongaのユニットテスト

ユニットテストについてお勉強中の阿部です。

今回はPGroongaのユニットテストについて説明します。 どのようなツールを使って、どのようなテストをしているのかと新たにテストを追加する方法を説明します。

Groonga開発者に聞け!(グルカイ!)第60回でも 解説しているので、あわせてご覧ください!

もっと読む

macOSでファイルをたくさん開きたい!

macOSでファイルをたくさん開きたい阿部です。

PGroongaのCIで system call error: Too many open files というエラーが発生しました。 開いているファイルが多すぎてエラーになったようです。

このエラーを回避してCIが成功するように対応したので、その内容を紹介します。 今回はmacOSのCIで生じたエラーなので、macOSでの回避方法の紹介です。

同じエラーに遭遇した方は参考にしてください!

もっと読む