Horimoto Yasuhiro
horim****@clear*****
2018年 5月 29日 (火) 18:37:56 JST
堀本です。 今日は肉の日ですね! Groonga 8.0.3をリリースしました! http://groonga.org/ja/blog/2018/05/29/groonga-8.0.3.html 細かな変更点についてはニュースをご確認下さい。 http://groonga.org/ja/docs/news.html#release-8-0-3 それでは、8.0.3のリリースについて紹介します。 # 変更内容 主な変更点は以下の通りです。 * [highlight_html] NormalizerNFKC100 または TokenNgram を使って検索 した結果のハイライトをサポートしました。 * [normalizers] NormalizerNFKC100 に新しいオプション unify_middle_dot option を追加しました。 * [normalizers] NormalizerNFKC100 に新しいオプション unify_katakana_v_sounds option を追加しました。 * [normalizers] NormalizerNFKC100 に新しいオプション unify_katakana_bu_sound option を追加しました。 * [sub_filter] 十分にフィルターされたケースの sub_filter の動作を 最適化しました。 * [delete] 新しいオプション limit を追加しました。 * [normalizers] U+FF21 FULLWIDTH LATIN CAPITAL LETTER A のような 全角ラテン大文字が、 U+0061 LATIN SMALL LETTER A のようなラテン 小文字に正規化されない不具合を修正しました。 すでに、`NormalizerNFKC100` を使用している場合は、インデックスを 再生成する必要があります。 ### [highlight_html] NormalizerNFKC100 または TokenNgram を使って検索 した結果のハイライトをサポートしました。 以下の例のように、 NormalizerNFKC100 または TokenNgram を使った検索 のキーワードをハイライト出来ます。 table_create Entries TABLE_NO_KEY column_create Entries body COLUMN_SCALAR ShortText table_create Terms TABLE_PAT_KEY ShortText \ --default_tokenizer 'TokenNgram("report_source_location", true)' \ --normalizer 'NormalizerNFKC100' column_create Terms document_index COLUMN_INDEX|WITH_POSITION Entries body load --table Entries [ {"body": "ア㌕Az"} ] [[0,0.0,0.0],1] select Entries \ --match_columns body \ --query 'グラム' \ --output_columns 'highlight_html(body, Terms)' [ [ 0, 0.0, 0.0 ], [ [ [ 1 ], [ [ "highlight_html", null ] ], [ "ア<span class=\"keyword\">㌕</span>Az" ] ] ] ] ### [normalizers] NormalizerNFKC100 に新しいオプション unify_middle_dot option を追加しました。 このオプションは以下の例のように、中点を正規化します。 normalize \ 'NormalizerNFKC100("unify_middle_dot", true)' \ "·ᐧ•∙⋅⸱・・" \ WITH_TYPES [ [ 0, 0.0, 0.0 ], { "normalized": "········", "types": [ "symbol", "symbol", "symbol", "symbol", "symbol", "symbol", "symbol", "symbol" ], "checks": [ ] } ] このオプションによって、 "・" の有無や "・" 位置にかかわらず 検索できます。 ### [normalizers] NormalizerNFKC100 に新しいオプション unify_katakana_v_sounds option を追加しました。 このオプションは、以下の例のように "ヴァヴィヴヴェヴォ" を "バビブベボ" へ正規化します。 normalize \ 'NormalizerNFKC100("unify_katakana_v_sounds", true)' \ "ヴァヴィヴヴェヴォヴ" \ WITH_TYPES [ [ 0, 0.0, 0.0 ], { "normalized": "バビブベボブ", "types": [ "katakana", "katakana", "katakana", "katakana", "katakana", "katakana" ], "checks": [ ] } ] 例えば "バイオリン" を "ヴァイオリン" で検索できます。 ### [normalizers] NormalizerNFKC100 に新しいオプション unify_katakana_bu_sound option を追加しました。 このオプションは、以下の例のように "ヴァヴィヴゥヴェヴォ" を "ブ" に 正規化します。 normalize \ 'NormalizerNFKC100("unify_katakana_bu_sound", true)' \ "ヴァヴィヴヴェヴォヴ" \ WITH_TYPES [ [ 0, 0.0, 0.0 ], { "normalized": "ブブブブブブ", "types": [ "katakana", "katakana", "katakana", "katakana", "katakana", "katakana" ], "checks": [ ] } ] 例えば、 セーブル や セーヴル を セーヴェル で検索できます。 ### [sub_filter] 十分にフィルターされたケースの sub_filter の動作を 最適化しました。 この最適化は、例えば、以下のように sub_filter 実行前に十分にレコードが 絞り込まれているケースで有効になります。 table_create Files TABLE_PAT_KEY ShortText column_create Files revision COLUMN_SCALAR UInt32 table_create Packages TABLE_PAT_KEY ShortText column_create Packages files COLUMN_VECTOR Files column_create Files packages_files_index COLUMN_INDEX Packages files table_create Revisions TABLE_PAT_KEY UInt32 column_create Revisions files_revision COLUMN_INDEX Files revision load --table Files [ {"_key": "include/groonga.h", "revision": 100}, {"_key": "src/groonga.c", "revision": 29}, {"_key": "lib/groonga.rb", "revision": 12}, {"_key": "README.textile", "revision": 24}, {"_key": "ha_mroonga.cc", "revision": 40}, {"_key": "ha_mroonga.hpp", "revision": 6} ] load --table Packages [ {"_key": "groonga", "files": ["include/groonga.h", "src/groonga.c"]}, {"_key": "rroonga", "files": ["lib/groonga.rb", "README.textile"]}, {"_key": "mroonga", "files": ["ha_mroonga.cc", "ha_mroonga.hpp"]} ] select Packages \ --filter '_key == "rroonga" && \ sub_filter(files, "revision >= 10 && revision < 40")' \ --output_columns '_key, files, files.revision' ### [delete] 新しいオプション limit を追加しました。 以下の例のように、このオプションを使って、削除するレコードの 件数を制限できます。 table_create Users TABLE_PAT_KEY ShortText [[0,0.0,0.0],true] load --table Users [ {"_key": "alice"}, {"_key": "bob"}, {"_key": "bill"}, {"_key": "brian"} ] [[0,0.0,0.0],4] delete --table Users --filter '_key @^ "b"' --limit 2 [[0,0.0,0.0],true] #>delete --filter "_key @^ \"b\"" --limit "2" --table "Users" #:000000000000000 filter(3) #:000000000000000 delete(2): [0][2] #<000000000000000 rc=0 select Users [ [ 0, 0.0, 0.0 ], [ [ [ 2 ], [ [ "_id", "UInt32" ], [ "_key", "ShortText" ] ], [ 1, "alice" ], [ 3, "bill" ] ] ] ] ## 改良 * [highlight_html] NormalizerNFKC100 または TokenNgram を使って検索 した結果のハイライトをサポートしました。 * [トークナイザー] TokenNgram に新しいオプション report_source_location option を追加しました。 * [ノーマライザー] NormalizerNFKC100 に新しいオプション unify_middle_dot option を追加しました。 * [ノーマライザー] NormalizerNFKC100 に新しいオプション unify_katakana_v_sounds option を追加しました。 * [ノーマライザー] NormalizerNFKC100 に新しいオプション unify_katakana_bu_sound option を追加しました。 * [sub_filter] 十分にフィルターされたケースでの sub_filter の動作を 最適化しました。 * [groonga-httpd] 全てのワーカのコンテキストアドレスをユニーク にしました。 * [delete] 新しいオプション limit を追加しました。 * [httpd] バンドルしているnginxのバージョンを1.14.0に更新しました。 ## 修正 * [logical_select] 動的カラムをフィルターした時にエラーが発生すると メモリリークする不具合を修正しました。 * [logical_count] 動的カラムの初期化に失敗した際にメモリリークする 不具合を修正しました。 * [logical_range_filter] 動的カラムの評価に失敗した際にメモリリーク する不具合を修正しました。 * [トークナイザー] loose_symbol のように緩いトークナイズをした時に source_offset が誤った値になる不具合を修正しました。 * [ノーマライザー] U+FF21 FULLWIDTH LATIN CAPITAL LETTER A のような 全角ラテン大文字が、U+0061 LATIN SMALL LETTER A のようなラテン小文字 に正規化されない不具合を修正しました。 すでに、 NormalizerNFKC100 を使用している場合は、インデックスを 再生成する必要があります。