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