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*****>