BloGroonga

2022-11-29

PostgreSQL用高速日本語全文検索モジュールPGroonga(ぴーじーるんが) 2.4.2リリース

PostgreSQLで高速日本語全文検索をできるようにするPGroongaの2.4.2をリリースしました!

ハイライト

pgroonga_wal_apply()pgroonga_vacuum() をスタンバイデータベース上で自動的に実行する新しいモジュール pgroonga_standby_maintainer を追加しました

通常、PGroongaとストリーミングレプリケーションを一緒に使っている場合、PGroongaのWALはスタンバイのデータベースには適用されません。

したがって、例えば、スタンバイのデータベースをプライマリーのデータベースに切り替えた後の最初の"SELECT"は遅い可能性があります。 切り替わった後のプライマリーのデータベースに未適用のPGroongaのWALを適用する時間があるためです。

いままでは、この問題は pgroonga_wal_applier モジュールを使うことで解決できましたが、2.4.2からは pgroonga_standby_maintainer モジュールを使うことをおすすめします。 pgroonga_standby_maintainer モジュールは、pgroonga_wal_applier モジュールよりも便利です。 pgroonga_standby_maintainer モジュールは、 pgroonga_wal_apply() 関数の自動実行だけでなく、 pgroonga_vacuum() 関数の自動実行もおこなうためです。

したがって、 pgroonga_standby_maintainer モジュールを使えば、スタンバイのデータベース上で、 pgroonga_wal_applier モジュールを使う必要も pgroonga_vacuum() 関数を定期的に実行する必要もありません。

pgroonga_standby_maintainer モジュールの使い方については、 pgroonga_standby_maintainer モジュールのリファレンスも参照してください。

pgroonga_snippet_html() 関数にスニペットの長さを指定する新しい引数を追加しました

通常、 pgroonga_snippet_html() 関数で抽出するキーワードの周辺テキストの最大数は200バイトですが、この機能を使うことでこの最大数を調整できます。 そのため、より柔軟にキーワードの周辺テキストを抽出できます。

例えば、キーワードの周辺テキストを50バイト抽出したい場合は、以下のように実行できます。 pgroonga_snippet_html() の第三引数によってキーワードの周辺テキストの長さを動的に指定できることに注目してください。

  SELECT pgroonga_snippet_html(
    'Groonga is a fast and accurate full text search engine based on ' ||
    'inverted index. One of the characteristics of Groonga is that a ' ||
    'newly registered document instantly appears in search results. ' ||
    'Also, Groonga allows updates without read locks. These characteristics ' ||
    'result in superior performance on real-time applications.' ||
    E'\n' ||
    E'\n' ||
    'Groonga is also a column-oriented database management system (DBMS). ' ||
    'Compared with well-known row-oriented systems, such as MySQL and ' ||
    'PostgreSQL, column-oriented systems are more suited for aggregate ' ||
    'queries. Due to this advantage, Groonga can cover weakness of ' ||
    'row-oriented systems.',
    ARRAY['Groonga'],
    50
  );
                                                                                                                    pgroonga_snippet_html                                                                                                                     
  ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  {"<span class=\"keyword\">Groonga</span> is a fast and accurate full text search en","he characteristics of <span class=\"keyword\">Groonga</span> is that a newly regi","search results. Also, <span class=\"keyword\">Groonga</span> allows updates witho"}
  (1 row)

pgroonga_snippet_html() 関数の使い方については pgroonga_snippet_html()のリファレンスも参照してください。

その他の変更については、 PGroongaのリリースノートリリース自慢会を参照してください。

まとめ

新規ユーザーの方は、PGroongaについても参照してください。

PostgreSQLで高速に日本語全文検索をしたいという方はPGroongaを使ってガンガン検索してください!