[groonga-dev,04034] [ANN] PGroonga 1.0.9

Back to archive index

Kouhei Sutou kou****@clear*****
2016年 6月 2日 (木) 11:53:55 JST


須藤です。

PGroonga 1.0.9をリリースしました!

  http://groonga.org/ja/blog/2016/06/02/pgroonga-1.0.9.html

## アップグレード方法

1.0.9は1.0.6、1.0.7、1.0.8と互換性があります。

http://pgroonga.github.io/ja/upgrade/#compatible-case の
手順でアップグレードしてください。

## 変更点

  * [Ubuntu] Xenial Xerus(16.04 LTS)をサポートしました。

  * 検索キーワードをハイライトしたHTMLを返す
    pgroonga.highlight_html関数を追加しました。

  * 検索キーワードが何バイト目に含まれているかを返す
    pgroonga.match_positions_byte関数を追加しました。通常は
    この関数を使う必要はありません。アプリケーション側で検索
    キーワードを処理したい場合に使います。

  * クエリーから検索キーワードを抽出する
    pgroonga.query_extract_keywords関数を追加しました。

  * [Windows] バンドルするGroongaを6.0.3にアップグレードしました。

  * [Windows] ビルド対象のPostgreSQLを9.5.3にアップグレードしました。

  * [pgroonga.text_array_term_search_ops_v2オペレータークラ
    ス] text[]型の値に対して前方一致検索を行う演算子&^>を追
    加しました。要素のどれか1つでもマッチすればマッチしたこ
    とになります。

  * [pgroonga.text_array_term_search_ops_v2オペレータークラ
    ス] text[]型の値に対して前方一致RK検索(ローマ字・ひらが
    な・カタカナ入力でカタカナデータを前方一致検索する検索)
    を行う演算子&^~>を追加しました。要素のどれか1つでもマッ
    チすればマッチしたことになります。

## 前方一致検索と前方一致RK検索について

今回のリリースではpgroonga.text_array_term_search_ops_v2オペ
レータークラスを追加しました。このオペレータークラスを使うと
前方一致検索・前方一致RK検索を使うことができます。これらの検
索は検索欄での入力補完を実現する場合に有用です。

タグを入力補完する例を使って簡単に使い方を説明します。

まず、タグ名とタグのヨミガナを登録します。PostgreSQLは配列を
使えて便利ですね。

----
CREATE TABLE tags (
  name text PRIMARY KEY,
  readings text[]
);

INSERT INTO tags VALUES ('PostgreSQL', ARRAY['ポストグレスキューエル', 'ポスグレ']);
INSERT INTO tags VALUES ('Groonga',    ARRAY['グルンガ']);
INSERT INTO tags VALUES ('PGroonga',   ARRAY['ピージールンガ']);
INSERT INTO tags VALUES ('pglogical',  ARRAY['ピージーロジカル']);
----

タグ名とタグのヨミガナにインデックスを作ります。
tags.readingsにpgroonga.text_array_term_search_ops_v2オペレー
タークラスを使っていることがポイントです。

----
CREATE INDEX pgroonga_tags_index ON tags
  USING pgroonga (name pgroonga.text_term_search_ops_v2,
                  readings pgroonga.text_array_term_search_ops_v2);
----

タグ名そのもの(PostgreSQLやGroonga)に対して前方一致検索を
するには次のようにします。

----
SELECT name
  FROM tags
  WHERE name &^ 'pos';
--     name    
-- ------------
--  PostgreSQL
-- (1 row)
----

タグをローマ字で検索するには次のようにします。

----
SELECT name, readings
  FROM tags
  WHERE readings &^~> 'pos';
--     name    |             readings              
-- ------------+-----------------------------------
--  PostgreSQL | {ポストグレスキューエル,ポスグレ}
-- (1 row)
----

ORすると結果をまとめて取得できます。

----
SELECT name, readings
  FROM tags
  WHERE name &^ 'pos' OR
        readings &^~> 'pos';
--     name    |             readings              
-- ------------+-----------------------------------
--  PostgreSQL | {ポストグレスキューエル,ポスグレ}
-- (1 row)
----

「pi-ji-」で検索すると次のようになります。

----
SELECT name, readings
  FROM tags
  WHERE name &^ 'pi-ji-' OR
        readings &^~> 'pi-ji-';
--    name    |      readings      
-- -----------+--------------------
--  PGroonga  | {ピージールンガ}
--  pglogical | {ピージーロジカル}
-- (2 rows)
----

PostgreSQLを使って入力補完も実現できると、さらにPostgreSQLを
有効活用できますね。

## おしらせ

PGroongaだけでなく全文検索についても興味がある方は「Groonga
で学ぶ全文検索」への参加もご検討ください。「Groongaで学ぶ全
文検索」は予習・復習なしで全文検索を学ぶ、参加者に合わせて内
容を決める、という限られた時間内でできるだけ実りある時間にし
ようというスタイルの勉強会です。全文検索を学びたい!という方
はご活用ください。

次回は6月17日に開催です。

  * Groongaで学ぶ全文検索 2016-06-17
    https://groonga.doorkeeper.jp/events/45556

また、6月9日(木)の夜にはMySQLとPostgreSQLと日本語全文検索2
を開催します。PGroongaに関する情報もあるのでぜひご参加くださ
い。VVAULT AUDITというログ管理ソフトウェアでのPGroongaの利用
事例の紹介もある予定です。

  * MySQLとPostgreSQLと日本語全文検索2
    https://groonga.doorkeeper.jp/events/41770


それでは、PostgreSQLで日本語全文検索をしたい場合はPGroongaを
試してみてください。

-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/>

Groongaベースの全文検索システムを総合サポート:
  http://groonga.org/ja/support/
パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
  http://www.clear-code.com/recruitment/
リーダブルコードワークショップ:
  http://www.clear-code.com/services/code-reader/readable-code-workshop.html




groonga-dev メーリングリストの案内
Back to archive index