Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
89 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,89 @@ | ||
| --- | ||
| layout: post.ja | ||
| title: PGroonga 0.2.0リリース - PostgreSQL 9.4でGroongaを使える! | ||
| description: PGroonga 0.2.0をリリースしました!PostgreSQL 9.4でGroongaを使えます! | ||
| --- | ||
|
|
||
| ## PGroonga 0.2.0リリース - PostgreSQL 9.4でGroongaを使える! | ||
|
|
||
| PostgreSQLからGroongaを使えるようにする[PGroonga](https://github.com/pgroonga/pgroonga)の最初のバージョン、0.2.0をリリースしました! | ||
|
|
||
| PGroongaは最新のPostgreSQL 9.4で使えます。PostgreSQLからGroongaを使うためのプラグインとして[textsearch_groonga](http://textsearch-ja.projects.pgfoundry.org/textsearch_groonga.html)という拡張機能もありますが、この拡張機能はPostgreSQL 9.4や新しいGroongaでは動きませんでした。 | ||
|
|
||
| PGroongaはtextsearch\_groongaをベースに、最新のPostgreSQL・Groongaで動くようにしたものです。 | ||
|
|
||
| PostgreSQLで日本語全文検索をする方法には次の方法がありますが、それぞれいくつか問題があります。 | ||
|
|
||
| * [pg_trgm](https://www.postgresql.jp/document/9.3/html/pgtrgm.html) | ||
| * PostgreSQLに付属しているがデフォルトではインストールされない。 | ||
| * 日本語に対応させるにはソースコードを変更する必要がある。 | ||
| * [pg_bigm](http://pgbigm.sourceforge.jp/) | ||
| * 正確な全文検索機能を使うには[Recheck機能](http://pgbigm.sourceforge.jp/pg_bigm-1-1.html#enable_recheck)を有効にする必要がある。Recheck機能を有効にするとインデックスを使った検索をしてから、インデックスを使って見つかったレコードに対してシーケンシャルに検索をするのでインデックスを使った検索でのヒット件数が多くなると遅くなりやすい。 | ||
|
|
||
| PGroongaはRecheck機能を使わなくても正確な検索結果を返せるため、ヒット件数が多い時でも性能が落ちにくいです。理論的には。(要ベンチマーク。興味のある人はベンチマークをとって公開してください!) | ||
|
|
||
| ただし、PGroongaはWALに対応していないため、PostgreSQLのレプリケーションの仕組みを使えません。[pgpool-II](http://www.pgpool.net/jp/)と組み合わせる必要があります。 | ||
|
|
||
| (WALに対応していないのはPostgreSQLがWALに対応する仕組みを提供していないからです。PostgreSQLのメーリングリストで聞いたところ、開発中ということでした。9.6で入るといいなぁということです。) | ||
|
|
||
| ## インストール方法 | ||
|
|
||
| 現在、CentOS 7用のパッケージのみ提供しています。(次のリリースではUbuntu 14.10用のパッケージも提供する予定です。)CentOS 7ユーザーの人は簡単にインストールできます。他の環境の方はソースからインストールしてください。 | ||
|
|
||
| インストール方法の詳細は[README.mdのインストールの項目](https://github.com/pgroonga/pgroonga#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)を参照してください。 | ||
|
|
||
| ## 使い方 | ||
|
|
||
| 簡単に使い方を紹介します。 | ||
|
|
||
| まず、`text`型のカラムを作って`pgroonga`インデックスを張ります。 | ||
|
|
||
| ```sql | ||
| CREATE TABLE memos ( | ||
| id integer, | ||
| content text | ||
| ); | ||
|
|
||
| CREATE INDEX pgroonga_index ON memos USING pgroonga (content); | ||
| ``` | ||
|
|
||
| データを投入します。 | ||
|
|
||
| ```sql | ||
| INSERT INTO memos VALUES (1, 'PostgreSQLはリレーショナル・データベース管理システムです。'); | ||
| INSERT INTO memos VALUES (2, 'Groongaは日本語対応の高速な全文検索エンジンです。'); | ||
| INSERT INTO memos VALUES (3, 'PGroongaはインデックスとしてGroongaを使うためのPostgreSQLの拡張機能です。'); | ||
| ``` | ||
|
|
||
| 検索します、といきたいところですがその前に少し準備をします。ここではシーケンシャルスキャンではなくインデックスを使った全文検索を使いたいので、シーケンシャルスキャン機能を無効にします。(あるいはもっとたくさんのデータを投入します。) | ||
|
|
||
| ```sql | ||
| SET enable_seqscan = off; | ||
| ``` | ||
|
|
||
| 全文検索をするときは`%%`演算子を使います。 | ||
|
|
||
| ```sql | ||
| SELECT * FROM memos WHERE content %% '全文検索'; | ||
| -- id | content | ||
| -- ----+--------------------------------------------------- | ||
| -- 2 | Groongaは日本語対応の高速な全文検索エンジンです。 | ||
| -- (1 行) | ||
| ``` | ||
|
|
||
| `キーワード1 OR キーワード2`のようにクエリー構文を使って全文検索をするときは`@@`演算子を使います。 | ||
|
|
||
| ```sql | ||
| SELECT * FROM memos WHERE content @@ 'PGroonga OR PostgreSQL'; | ||
| -- id | content | ||
| -- ----+--------------------------------------------------------------------------- | ||
| -- 3 | PGroongaはインデックスとしてGroongaを使うためのPostgreSQLの拡張機能です。 | ||
| -- 1 | PostgreSQLはリレーショナル・データベース管理システムです。 | ||
| -- (2 行) | ||
| ``` | ||
|
|
||
| クエリー構文の詳細は[Groongaのドキュメント](http://groonga.org/ja/docs/reference/grn_expr/query_syntax.html)を参照してください。 | ||
|
|
||
| ## まとめ | ||
|
|
||
| 最新のPostgreSQLでGroongaを使えるようにするPGroongaという拡張機能をリリースしました。PostgreSQLで日本語全文検索をしたいという方はぜひ試してみてください!試してみた方はいろんな人が参照できるようにぜひブログなどに結果を書いてください。特にベンチマーク結果を楽しみにしています! |