[groonga-dev,01182] Re: [ANN] groonga 2.1.2

Back to archive index

HAYASHI Kentaro hayas****@clear*****
2013年 1月 29日 (火) 12:29:23 JST


林です。

mroongaについて補足します。

いつもgroongaと一緒に定期的にリリースしているmroongaですが、
今月のリリースはありません。

そのかわり、来月9日に(2/9ですね!)MySQLと同等な結果を返すノーマライザーを実験的に
追加した状態でリリースする予定です!

On Tue, 29 Jan 2013 10:51:13 +0900
HAYASHI Kentaro <hayas****@clear*****> wrote:

> 
> 林です。
> 
> 
> 今日は2013年最初の肉の日ですね。
> 
> groonga 2.1.2をリリースしました!
>   http://groonga.org/ja/docs/news.html#release-2-1-2
> 
> 今回のリリースの主なトピックは3つあります。
> 
> * 複数のquery()のサポート
> * groonga-tokenizer-mecabパッケージと同時に辞書のインストールをサポート
> * Fedora 18のサポート
> 
> それぞれの環境毎のインストール方法はこちらを見てください。
>   http://groonga.org/ja/docs/install.html
> 
> ○ 複数のquery()のサポート
> 
> 今回のリリースでは、従来 --match_columnsと--queryとで個別に指定していた
> カラムとキーワードを--filterにquery()を使うことで、まとめて指定することが
> できるようになりました。
> 
> ユーザ情報のテーブルのnameカラムからaliceを全文検索するクエリを例として
> 示します。(nameカラムで合致したデータに対する重みづけとして10を指定します)
> 
> 例で使うテーブルのスキーマは以下の通りです。
> 
>   table_create Users TABLE_NO_KEY
>   column_create Users name COLUMN_SCALAR ShortText
>   column_create Users memo COLUMN_SCALAR ShortText
> 
>   table_create Lexicon TABLE_HASH_KEY ShortText \
>     --default_tokenizer TokenBigramSplitSymbolAlphaDigit \
>     --normalizer NormalizerAuto
>   column_create Lexicon users_name COLUMN_INDEX|WITH_POSITION Users name
>   column_create Lexicon users_memo COLUMN_INDEX|WITH_POSITION Users memo
> 
> 例で使うテーブルのデータは以下の通りです。
> 
>   load --table Users
>   [
>   {"name": "Alice", "memo": "groonga user"},
>   {"name": "Alisa", "memo": "mroonga user"},
>   {"name": "Bob",   "memo": "rroonga user"},
>   {"name": "Tom",   "memo": "nroonga user"},
>   {"name": "Tobby", "memo": "groonga and mroonga user. mroonga is ..."},
>   ]
> 
> 従来通り--match_columnsと--queryを組みあわせることで、以下のように書けます。
> (nameカラムに対し重みづけを行っています)
> 
>   select Users \
>     --output_columns name,_score \
>     --match_columns "name * 10" \
>     --query alice
> 
> これをquery()を使うことで--filterにまとめて書くことができるようになります。
> 
>   select Users \
>     --output_columns name,_score \
>     --filter 'query("name * 10", "alice")'
> 
> これだけだとあまりありがたみがないかも知れません。
> ではいくつかキーワードが与えられていて、そのキーワードに異なる重みづけをして
> 全文検索を行いたいときにはどうなるでしょうか。
> 
> --queryと--match_columnsの組み合わせの場合、個々のキーワードに対しての重みづけはできません。
> 
>   select Users \
>     --output_columns name,memo,_score \
>     --match_columns "memo * 10" --query "memo:@groonga OR memo:@mroonga OR memo:@user" \
>     --sortby -_score
> 
> 一方、query()関数を使うと、個別のキーワードについて重みづけを行うことができます。
> 
>   select Users \
>     --output_columns name,memo,_score \
>     --filter 'query("memo * 10", "groonga") || query("memo * 20", "mroonga") || query("memo * 1", "user")' \
>     --sortby -_score
> 
> 最初のクエリの結果ではgroongaもmroongaも等価ですが、
> 
>   [
>    ["name","ShortText"],["memo","ShortText"],["_score","Int32"]
>   ],
>   ["Tobby","groonga and mroonga user. mroonga is ...",4],
>   ["Alice","groonga user",2],
>   ["Alisa","mroonga user",2],
>   ["Bob","rroonga user",1],
>   ["Tom","nroonga user",1]
> 
> 次のクエリの結果では重みづけを行っているのでmroongaがより上位に来ていることがわかります。
> 
>   [
>    ["name","ShortText"],["memo","ShortText"],["_score","Int32"]
>   ],
>   ["Tobby","groonga and mroonga user. mroonga is ...",51],
>   ["Alisa","mroonga user",21],
>   ["Alice","groonga user",11],
>   ["Tom","nroonga user",1],
>   ["Bob","rroonga user",1]
> 
> このようにquery()を使うことで、より望ましい検索結果を得られるようになりました。
> 
> ○ groonga-tokenizer-mecabパッケージと同時に辞書インストールをサポート
> 
> 今回のリリースでは、groonga-tokenizer-mecabのインストール時に
> まだMeCabの辞書がインストールされていない場合、一緒にインストールするようにしました。
> 
> 以下の手順で、groonga-tokenizer-mecabをインストールすると
> MeCabの辞書がインストールされます。
> 
> Debian/Ubuntuの場合:
>   % sudo apt-get install -y groonga-tokenizer-mecab
> 
> CentOS/Fedoraの場合:
>   % sudo yum install -y groonga-tokenizer-mecab
> 
> 従来、MeCabの辞書についてはどの辞書を使うかについてユーザさんの選択にまかせていたため、
> 特に依存関係をパッケージに含めていませんでしたが、groongaのインストール
> で初めてMeCabをインストールする場合の利便性を考慮してこのようにしました。
> 
> なお、すでにMeCabの辞書をインストールしている場合にはそのままインストール済みの
> 辞書を使うようになっています。
> 
> ○ Fedora 18のサポート
> 
> 今回のリリースでは2013/01/15にリリースされたFedora 18のサポートを追加しました。
> Fedora 18のサポートに伴ない、Fedora 17のパッケージの提供は行いません。
> 
> インストール手順は以下を参照してください。
>   http://groonga.org/ja/docs/install/fedora.html#fedora-18
> 
> ○ 変更点
> 
> さて、2.1.1からの変更点は以下の通りです。
>   http://groonga.org/ja/docs/news.html#release-2-1-2
> 
> 2.1.2リリース - 2013/01/29
> --------------------------
> 
> 改良
> 
>     * 複数の query() を select コマンドでサポートしました。
>       例えば、キーワードごとに異なる重みづけを指定して検索するのに
>       'query("column * weight1", keyword1) || query("column * weight2", keyword2) || ...' などと
>        --filter に指定することができます。
>     * 実験的機能であったビューを削除しました。
>     * grn_logger_reopen APIを追加しました。 grn_logger_info APIは非推奨となりました。
>       grn_logger APIを代りに使ってください。
>     * grn_default_logger_set_path() と grn_default_logger_get_path() APIを追加しました。
>       グローバル変数としての grn_log_path は削除しました。上記変数を使うにはAPIを使用してください。
>     * grn_default_query_logger_set_path() と grn_default_query_logger_get_path() APIを追加しました。
>       グローバル変数としての grn_qlog_path は削除しました。上記変数を使うにはAPIを使用してください。
>     * テーブル と ノーマライザー に関するドキュメントを追加。
>     * [deb][rpm] groonga-tokenizer-mecab パッケージのインストール時に必要な辞書を辞書をインストールするように改善した。
>     * 範囲検索を カラムインデックスによる関連テーブルをまたぐ検索 でもサポートした。
>       例えば、 'column1.column2...columnN <= "1988-01-04 00:00:00"' というように
>       --filter に範囲を指定することができるようになります。
> 
> 修正
> 
>     * MeCabトークナイザーの共有オブジェクトが見つからなくてもエラーをログに記録しないようにした。
>       [groonga-dev,01174] [wingさんが報告]
>     * [httpd] CentOS 5.4で SED 変数を明示的に設定することで、configureスクリプト実行が失敗しないようにした。
>     * 値を設定していない未初期化のベクタカラムの値を select コマンドで参照したときにクラッシュする不具合を修正した。
> 
> 感謝
> 
>     * wingさん
> 
> -- 
> HAYASHI Kentaro <hayas****@clear*****>
> 
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev


-- 
HAYASHI Kentaro <hayas****@clear*****>




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