Skip to content

Commit

Permalink
blog: writing PGroonga release announce
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Jul 20, 2017
1 parent ececfe9 commit 47ec72b
Showing 1 changed file with 88 additions and 0 deletions.
88 changes: 88 additions & 0 deletions ja/_posts/2017-07-03-pgroonga-1.2.3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
---
layout: post.ja
title: PostgreSQL用高速日本語全文検索モジュールPGroonga(ぴーじーるんが) 1.2.3リリース
description: PostgreSQL用高速日本語全文検索モジュールPGroonga(ぴーじーるんが) 1.2.3をリリースしました!
published: false
---

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

PostgreSQLで高速日本語全文検索をできるようにする[PGroonga](https://pgroonga.github.io/ja/)の1.2.3をリリースしました!

新規ユーザーの方は、PGroonga 1.0.0のリリースアナウンスの[PGroongaについて]({% post_url ja/2015-10-29-pgroonga-1.0.0 %}#pgroonga)も参照してください。

## ハイライト

1.2.1以降のハイライトは次の通りです。

* 演算子名の整理

* クエリー展開機能をサポート

* 入力補完機能をサポート

* 類似文書検索をサポート

* `jsonb`の全文検索の使い勝手を向上

それぞれ説明します。

### 演算子名の整理

PGroongaはクエリー言語を用いた全文検索用の演算子として[textsearch](https://www.postgresql.jp/document/current/html/textsearch.html)と同じ`@@`を使っていました。これは`@@`だと既存のPostgreSQLユーザーはなじみやすいのではないかという期待からです。しかし、textsearchとPGroongaの全文検索の挙動が違うためにかえって使いにくいものになりました。

そこで、`@@`の代わりに`&?`を導入しました。`psql`で直接SQLを実行するときはこれで問題ないのですが、各種言語のクライアントライブラリーから使うときには使いにくかったです。これは、`?`はクライアントライブラリーがSQLを組み立てるときに使うプレースホルダー文字と同じためです。

そのため、`@@`でも`&?`でもなく`&@~`を使うことにしました。この演算子名にした理由は次の通りです。

* `&`:PGroongaの演算子全体で`&`をプレフィックスに使うようにしたため。

* `@`:textsearchの`@@`演算子と同様に全文検索機能を提供することをわかりやすくするため。

* `~`:RubyやPerlでは`~`で正規表現によるパターンマッチを表現しているのでそれにならったため。クエリー言語は正規表現ではないが、パターンのようなものと捉えることもできるため、`~`をつけることで「指定したキーワードでの全文検索(演算子名は`&@`)」ではなく「クエリー言語での全文検索」を表現した。

`_v2`が付かない既存の演算子クラスでも新しい演算子名を使えるので、徐々に新しい演算子名に移行できます。

### クエリー展開機能をサポート

同義語検索(*)の実現にも使えるクエリー展開機能をサポートしました。

(*) 表記が異なっても同じ意味ならヒットする検索。たとえば、「焼き肉」でも「焼肉」でも「焼肉」がヒットする。

同義語(クエリー展開ルール)は通常のテーブルで管理します。そのためいつも通り`SELECT``INSERT``UPDATE``DELETE`を使えます。textsearchでは[同義語辞書](https://www.postgresql.jp/document/9.6/html/textsearch-dictionaries.html#textsearch-synonym-dictionary)という専用の仕組みを用意しているため、特別な管理方法になります。

クエリー展開機能の詳細は[`pgroonga.query_expand`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-query-expand.html)を参照してください。

### 入力補完機能をサポート

TODO

### 類似文書検索をサポート

TODO

### `jsonb`の全文検索の使い勝手を向上

TODO

## アップグレード方法

1.0以降のすべてのバージョンと互換性があります。[アップグレード](https://pgroonga.github.io/ja/upgrade/)の「互換性がある場合」用の手順でアップグレードしてください。

## おしらせ

### セミナー

8月1日(火)14:00-16:00に[MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー](https://groonga.doorkeeper.jp/events/62741)を開催します。PGroongaの導入を検討している方はこの機会を活用してください。

### サポートサービス

[PGroongaのサポートサービス](https://pgroonga.github.io/ja/support/)を提供しています。インデックスや検索の設計方法に関するコンサルティングやトラブル時の調査、パフォーマンス改善・新機能追加などの技術支援など、PGroongaに関わるサポートが必要な場合はご相談ください。

## まとめ

PGroongaの新しいリリースを紹介しました。インデックス破損の自動復旧が追加されたりしてどんどん使いやすくなっています。

ここで紹介したもの以外の変更点は[リリースノート](https://pgroonga.github.io/ja/news/#version-1-2-3)を参照してください。

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

0 comments on commit 47ec72b

Please sign in to comment.