PostgreSQL用高速日本語全文検索モジュールPGroonga(ぴーじーるんが) 2.2.5リリース
PostgreSQLで高速日本語全文検索をできるようにするPGroongaの2.2.5をリリースしました!
新規ユーザーの方は、PGroonga 2.0.2のリリースアナウンスのPGroongaについても参照してください。
注意
PGroonga 2.2.3 と 2.2.4 には以下の問題があるため、これらのバージョンは使用しないでください。
-
PGroonga 2.2.3
- このバージョンは、Debian向け、Ubuntu向けのパッケージが依存関係の解決に失敗しインストールできない問題があります。
-
PGroonga 2.2.4
- このバージョンは、
ALTER EXTENSION pgroonga UPDATE;
を使用したアップグレードに失敗します。
- このバージョンは、
ハイライト
PGroonga 2.2.5の主な変更点は以下の通りです。 (2.2.3, 2.2.4で入った変更点も合わせて記載しています。)
-
同一のトランザクション内で
CREATE TABLE
とCREATE INDEX
とTRUNCATE
を実行できるようにしました。 -
PGroongaのインデックスを使用した検索が選択されやすくなるように、PGroongaの検索コストの見積もりを調整しました。
- 具体的には、同一のレコードに同じトークンが大量に含まれているケースで、PGroongaのインデックスが選択されるようになります。
-
PGroonga 2.2.4へのアップグレードが失敗する問題を修正しました。
-
PGroongaのjsonb用のインデックスだけがある状態で、検索条件のないSQLを実行すると、エラーになる問題を修正しました。
-
PGroongaが使用するGroongaのライブラリ(
libgroonga
)のバージョンが10.0.0以降の場合、シーケンシャルスキャンでの検索がエラーになる問題を修正しました。
同一のトランザクション内で CREATE TABLE
と CREATE INDEX
と TRUNCATE
を実行できるようにしました。
以前のバージョンでは、同一のトランザクション内でPGroongaのインデックスを作成し、 TRUNCATE
すると TRUNCATE
が失敗します。
例えば、以下のケースの場合に TRUNCATE
が失敗します。
BEGIN TRANSACTION;
CREATE EXTENSION IF NOT EXISTS pgroonga;
CREATE TABLE test (
id SERIAL PRIMARY KEY,
content text
);
CREATE INDEX test_id ON test USING pgroonga (content);
TRUNCATE TABLE test CASCADE;
COMMIT;
PGroongaのjsonb用のインデックスだけがある状態で、検索条件のないSQLを実行すると、エラーになる問題を修正しました。
以前のバージョンでは、例えば、以下のケースの場合に SELECT COUNT(*)
が失敗します。
CREATE TABLE logs (
record jsonb
);
CREATE INDEX pgroonga_index ON logs
USING pgroonga (record pgroonga_jsonb_ops_v2);
INSERT INTO logs VALUES ('{}');
SET enable_seqscan = off;
SELECT count(*) FROM logs;
PGroongaが使用するGroongaのライブラリ( libgroonga
)のバージョンが10.0.0以降の場合、シーケンシャルスキャンでの検索がエラーになる問題を修正しました。
この問題は、PGroongaのパッケージをインストールしている場合は発生しません。GroongaとPGroongaをソースからビルドしてインストールしている場合にのみ発生します。
例えば、以前のバージョンでは、以下のケースの場合に SELECT
が失敗します。
CREATE TABLE memos (
content varchar(256)
);
INSERT INTO memos VALUES ('りんご');
INSERT INTO memos VALUES ('リンゴ');
CREATE INDEX pgrn_index ON memos
USING pgroonga (content pgroonga_varchar_full_text_search_ops_v2);
SET enable_seqscan = on;
SET enable_indexscan = off;
SET enable_bitmapscan = off;
SELECT content, pgroonga_score(tableoid, ctid)
FROM memos
WHERE content &@~'りんご';
また、libgroonga
のバージョンは以下のクエリーで確認できます。
SHOW pgroonga.libgroonga_version;
pgroonga.libgroonga_version
-----------------------------
10.0.0
(1 row)
まとめ
PostgreSQLで高速に日本語全文検索をしたいという方はPGroongaを使ってガンガン検索してください!