Hiroyuki Sato
null+****@clear*****
Sun Feb 7 10:50:24 JST 2016
Hiroyuki Sato 2016-02-07 10:50:24 +0900 (Sun, 07 Feb 2016) New Revision: 28107c9b816351d86f88b752f075caa10092723a https://github.com/groonga/groonga.org/commit/28107c9b816351d86f88b752f075caa10092723a Merged 4d4de05: Merge pull request #24 from hiroyuki-sato/convert_to_md Message: Convert textile to markdown in ja/_posts directory. Added files: ja/_posts/2011-07-13-lexicon-cache.md ja/_posts/2011-07-28-innodb-fts.md ja/_posts/2011-10-29-release.md ja/_posts/2011-11-08-grn_dat.md ja/_posts/2011-12-02-groonga-night-2.md ja/_posts/2012-01-16-motionology-2012-1.md ja/_posts/2012-01-27-motionology-2012-1.md ja/_posts/2012-01-29-release.md ja/_posts/2012-02-17-madoka.md ja/_posts/2012-03-27-logo.md ja/_posts/2012-04-29-release.md ja/_posts/2012-05-29-release.md ja/_posts/2012-06-29-release.md ja/_posts/2012-07-29-release.md ja/_posts/2012-08-29-release.md ja/_posts/2012-09-29-release.md ja/_posts/2012-10-29-release.md ja/_posts/2012-11-29-release.md ja/_posts/2012-12-17-look-back-groonga-night-3.md ja/_posts/2012-12-29-release.md ja/_posts/2013-01-08-release.md ja/_posts/2013-01-29-release.md ja/_posts/2013-02-09-release.md ja/_posts/2013-02-28-release.md ja/_posts/2013-03-29-release.md ja/_posts/2013-04-29-release.md ja/_posts/2013-05-01-remove-1x-packages-from-repository.md ja/_posts/2013-05-10-sticker.md ja/_posts/2013-05-29-release.md ja/_posts/2013-06-29-release.md ja/_posts/2013-07-22-qiita-translation.md ja/_posts/2013-07-29-release.md ja/_posts/2013-08-12-reference-command-documentation.md ja/_posts/2013-09-29-release.md ja/_posts/2013-11-28-groonga-advent-calendar.md ja/_posts/2013-12-16-drop-squeeze-and-lucid-support.md ja/_posts/2013-12-20-groonga-night-4-on-youtube.md ja/_posts/2013-12-29-release.md ja/_posts/2014-02-09-release.md ja/_posts/2014-02-28-droonga-1.0.0.md ja/_posts/2014-03-29-sapporoonga.md ja/_posts/2014-04-29-groonga-meetup-2.md ja/_posts/2014-05-29-droonga-1.0.3.md ja/_posts/2014-06-29-droonga-1.0.4.md ja/_posts/2014-10-07-droonga-1.0.7.md Removed files: ja/_posts/2011-07-13-lexicon-cache.textile ja/_posts/2011-07-28-innodb-fts.textile ja/_posts/2011-10-29-release.textile ja/_posts/2011-11-08-grn_dat.textile ja/_posts/2011-12-02-groonga-night-2.textile ja/_posts/2012-01-16-motionology-2012-1.textile ja/_posts/2012-01-27-motionology-2012-1.textile ja/_posts/2012-01-29-release.textile ja/_posts/2012-02-17-madoka.textile ja/_posts/2012-03-27-logo.textile ja/_posts/2012-04-29-release.textile ja/_posts/2012-05-29-release.textile ja/_posts/2012-06-29-release.textile ja/_posts/2012-07-29-release.textile ja/_posts/2012-08-29-release.textile ja/_posts/2012-09-29-release.textile ja/_posts/2012-10-29-release.textile ja/_posts/2012-11-29-release.textile ja/_posts/2012-12-17-look-back-groonga-night-3.textile ja/_posts/2012-12-29-release.textile ja/_posts/2013-01-08-release.textile ja/_posts/2013-01-29-release.textile ja/_posts/2013-02-09-release.textile ja/_posts/2013-02-28-release.textile ja/_posts/2013-03-29-release.textile ja/_posts/2013-04-29-release.textile ja/_posts/2013-05-01-remove-1x-packages-from-repository.textile ja/_posts/2013-05-10-sticker.textile ja/_posts/2013-05-29-release.textile ja/_posts/2013-06-29-release.textile ja/_posts/2013-07-22-qiita-translation.textile ja/_posts/2013-07-29-release.textile ja/_posts/2013-08-12-reference-command-documentation.textile ja/_posts/2013-09-29-release.textile ja/_posts/2013-11-28-groonga-advent-calendar.textile ja/_posts/2013-12-16-drop-squeeze-and-lucid-support.textile ja/_posts/2013-12-20-groonga-night-4-on-youtube.textile ja/_posts/2013-12-29-release.textile ja/_posts/2014-02-09-release.textile ja/_posts/2014-02-28-droonga-1.0.0.textile ja/_posts/2014-03-29-sapporoonga.textile ja/_posts/2014-04-29-groonga-meetup-2.textile ja/_posts/2014-05-29-droonga-1.0.3.textile ja/_posts/2014-06-29-droonga-1.0.4.textile ja/_posts/2014-10-07-droonga-1.0.7.textile Renamed files: ja/_posts/2011-11-15-groonga-night-2-to-substitute.md (from ja/_posts/2011-11-15-groonga-night-2-to-substitute.textile) ja/_posts/2011-11-29-release.md (from ja/_posts/2011-11-29-release.textile) ja/_posts/2011-12-29-release.md (from ja/_posts/2011-12-29-release.textile) ja/_posts/2012-02-29-release.md (from ja/_posts/2012-02-29-release.textile) ja/_posts/2012-03-29-release.md (from ja/_posts/2012-03-29-release.textile) ja/_posts/2012-10-10-groonga-night-3.md (from ja/_posts/2012-10-10-groonga-night-3.textile) ja/_posts/2012-11-30-after-groonga-night-3.md (from ja/_posts/2012-11-30-after-groonga-night-3.textile) ja/_posts/2013-01-08-fluent-plugin-groonga.md (from ja/_posts/2013-01-08-fluent-plugin-groonga.textile) ja/_posts/2013-02-25-oss-incentive-award.md (from ja/_posts/2013-02-25-oss-incentive-award.textile) ja/_posts/2013-03-21-satori.md (from ja/_posts/2013-03-21-satori.textile) ja/_posts/2013-04-02-series-in-gihyo-jp.md (from ja/_posts/2013-04-02-series-in-gihyo-jp.textile) ja/_posts/2013-07-22-api-documentation.md (from ja/_posts/2013-07-22-api-documentation.textile) ja/_posts/2013-08-29-release.md (from ja/_posts/2013-08-29-release.textile) ja/_posts/2013-10-29-release.md (from ja/_posts/2013-10-29-release.textile) ja/_posts/2013-10-30-use-capitalized-notation.md (from ja/_posts/2013-10-30-use-capitalized-notation.textile) ja/_posts/2013-11-25-groonga-night-4.md (from ja/_posts/2013-11-25-groonga-night-4.textile) ja/_posts/2013-11-29-droonga-0.7.0.md (from ja/_posts/2013-11-29-droonga-0.7.0.textile) ja/_posts/2013-11-29-release.md (from ja/_posts/2013-11-29-release.textile) ja/_posts/2013-12-04-after-groonga-night-4.md (from ja/_posts/2013-12-04-after-groonga-night-4.textile) ja/_posts/2014-01-29-droonga-0.9.0.md (from ja/_posts/2014-01-29-droonga-0.9.0.textile) ja/_posts/2014-01-29-groonga-meetup.md (from ja/_posts/2014-01-29-groonga-meetup.textile) ja/_posts/2014-01-29-release.md (from ja/_posts/2014-01-29-release.textile) ja/_posts/2014-02-09-droonga-0.9.9.md (from ja/_posts/2014-02-09-droonga-0.9.9.textile) ja/_posts/2014-03-11-howto-print-stickers.md (from ja/_posts/2014-03-11-howto-print-stickers.textile) ja/_posts/2014-03-29-droonga-1.0.1.md (from ja/_posts/2014-03-29-droonga-1.0.1.textile) ja/_posts/2014-03-29-release.md (from ja/_posts/2014-03-29-release.textile) ja/_posts/2014-04-29-droonga-1.0.2.md (from ja/_posts/2014-04-29-droonga-1.0.2.textile) ja/_posts/2014-07-29-droonga-1.0.5.md (from ja/_posts/2014-07-29-droonga-1.0.5.textile) ja/_posts/2014-09-29-droonga-1.0.6.md (from ja/_posts/2014-09-29-droonga-1.0.6.textile) ja/_posts/2014-11-29-droonga-1.0.8.md (from ja/_posts/2014-11-29-droonga-1.0.8.textile) Added: ja/_posts/2011-07-13-lexicon-cache.md (+118 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2011-07-13-lexicon-cache.md 2016-02-07 10:50:24 +0900 (2741719) @@ -0,0 +1,118 @@ +--- +layout: post.ja +title: 索引語辞書におけるキャッシュの採用 +--- +h2. 索引語辞書におけるキャッシュの採用 + +索引語の辞書をたくさん引くのは索引を構築するタイミングですが,そのとき必要になるのは単純な参照と追加くらいです.おまけに,最頻出の索引語をほんの少しキャッシュに入れておくだけで,ほとんどのクエリはカバーできます.そうであるならば,「高頻度語を検出するための工夫は必要になるけど,十分なリターンが期待できるのはないか?」というお話です. + +written by s-yata. + +### 索引構築を速くするために + +全文検索用の索引を構築する上で,それなりのウェイトを占める処理の一つが索引語辞書の操作です.具体的には,入力文書から切り出された索引語を +ID +に変換する処理です.入力索引語が索引語辞書に登録されていなければ,新たに追加した後,割り当てた +ID を返します.登録されていれば,以前の追加によって割り当てられている ID +を返します. + +索引語辞書の操作を速くするのに重要なことを考えてみます. + +1. まず考えつくのは,索引語辞書のデータ構造を高速なものにすることです.ただし,時間効率の高いデータ構造は空間効率の面で劣るというのが一般的です.検索対象が大規模になれば索引語辞書も大規模になってしまうので,空間効率を度外視することはできません. +2. 次に考慮すべき事項として,参照と追加の比重があります.全文検索システムでは文字 + N-gram + や形態素を索引語とするのが一般的であり,入力文書から切り出される索引語の出現頻度は偏るので,どうしても参照の比重が大きくなります.つまり,データ構造の選定においては,追加時間より参照時間を重視すべきということです. +3. また,文書を検索するときの都合により,Common prefix search や + Predictive search を効率的に実現できることが理想です. +4. さらに,検索を止めることなく文書を追加するには,ロックフリーな参照を実現する必要があります. + +以上のことから,ダブル配列(※)を索引語辞書のデータ構造として採用することを検討しました.しかし,索引語の出現頻度を実際に計数してみると,空間効率・時間効率ともに優れた索引語辞書の構成が見えてきました.結論を述べると,ダブル配列やハッシュ表をキャッシュとして採用するという案になります.計測によって得られた出現頻度の偏りが大きかったため,頻出索引語のみを時間効率の高いデータ構造に格納してキャッシュとし,本体には空間効率の高いデータ構造を用いることに思い至ったというわけです. + +※ +ダブル配列でロックフリーな参照を実現する方法については,別の記事であらためて解説しようと思います. + +### 索引語の出現頻度がどのくらい偏るか + +索引語辞書にキャッシュを採用するという案の前提となっているのは,索引語の出現頻度が大きく偏ることです.そして,キャッシュの有効性を認めるに至った実験の結果が以下の表になります.頻出索引語があらかじめ分かっているものと仮定して,何件のキーをキャッシュに格納すればキャッシュヒット率が一定の値に到達するのかを調査しました. + +入力文書として用いたのは Wikipedia の記事と Twitter +のつぶやきであり,索引語として試したのは文字 2-gram と MeCab +による分かち書きの結果です. + +||_8=. キー数(%)| +||*4=. Wikipedia(日本語 + 英語)|*4=. Twitter(日本語)| +|*=. キャッシュ|*2=. 文字 Bigram + 英単語|*2=. 形態素|*2=. 文字 +Bigram + 英単語|_2=. 形態素| +|*=. ヒット率|*=. キー数|*=. |*=. キー数|*=.|*=. キー数|_=. |*=. +キー数|*=.| +|_>. 10%|>. 4|>. 0.000030|>. 3|>. 0.000022|>. +14|>. 0.000121|>. 5|>. 0.000038| +|_>. 20%|>. 10|>. 0.000075|>. 8|>. 0.000058|>. +51|>. 0.000443|>. 12|>. 0.000090| +|_>. 30%|>. 32|>. 0.000241|>. 19|>. 0.000137|>. +138|>. 0.001198|>. 23|>. 0.000173| +|_>. 40%|>. 125|>. 0.000942|>. 49|>. 0.000353|>. +319|>. 0.002768|>. 44|>. 0.000331| +|_>. 50%|>. 441|>. 0.003323|>. 148|>. 0.001067|>. +729|>. 0.006327|>. 108|>. 0.000811| +|_>. 60%|>. 1,350|>. 0.010173|>. 478|>. 0.003447|>. +1,635|>. 0.014189|>. 292|>. 0.002193| +|_>. 70%|>. 3,861|>. 0.029095|>. 1,549|>. 0.011169|>. +3,834|>. 0.033273|>. 921|>. 0.006918| +|_>. 80%|>. 11,412|>. 0.085996|>. 5,163|>. +0.037228|>. 10,030|>. 0.087044|>. 3,285|>. 0.024677| +|_>. 90%|>. 45,219|>. 0.340752|>. 22,867|>. +0.164882|>. 36,247|>. 0.314565|>. 15,888|>. 0.119349| +|_>. 91%|>. 54,215|>. 0.408542|>. 27,767|>. +0.200213|>. 43,018|>. 0.373326|>. 19,481|>. 0.146340| +|_>. 92%|>. 66,059|>. 0.497793|>. 34,321|>. +0.247471|>. 51,827|>. 0.449774|>. 24,284|>. 0.182420| +|_>. 93%|>. 82,213|>. 0.619523|>. 43,428|>. +0.313137|>. 63,663|>. 0.552492|>. 30,946|>. 0.232464| +|_>. 94%|>. 105,287|>. 0.793399|>. 56,646|>. +0.408445|>. 80,116|>. 0.695277|>. 40,619|>. 0.305127| +|_>. 95%|>. 140,105|>. 1.055773|>. 77,469|>. +0.558589|>. 104,166|>. 0.903992|>. 55,395|>. 0.416123| +|_>. 96%|>. 196,848|>. 1.483365|>. 113,521|>. +0.818541|>. 141,727|>. 1.229961|>. 79,754|>. 0.599106| +|_>. 97%|>. 300,097|>. 2.261407|>. 185,761|>. +1.339427|>. 206,542|>. 1.792450|>. 125,518|>. 0.942882| +|_>. 98%|>. 527,496|>. 3.974991|>. 369,337|>. +2.663098|>. 339,842|>. 2.949277|>. 234,680|>. 1.762899| +|_>. 99%|>. 1,294,298|>. 9.753293|>. 1,145,987|>. +8.263120|>. 750,373|>. 6.512021|>. 731,192|>. 5.492659| + +<!-- |_>. 100%|>. 13,270,369|>. 100.000000|>. 13,868,696|>. 100.000000|>. 11,522,890|>. 100.000000|>. 13,312,167|>. 100.000000| --> +実験結果を見ると,キャッシュヒット率が 90% +を超えるくらいに調整したとき,キャッシュに含まれる索引語の割合は全体の +1% +にも満たないことが分かります.つまり,空間効率の低いデータ構造をキャッシュとして採用したところで,索引語辞書のサイズにはほとんど影響しません.一方で,時間効率の高いデータ構造を採用すれば,索引構築にかかる時間を大幅に短縮できます. + +たとえば,キャッシュヒット率を 90% に調整すると,キャッシュが索引語 1 +つあたりに必要とするサイズが本体のそれと比べて 5 倍でも,全体の 5% +にも満たないということです.また,キャッシュの参照時間が本体の 1/5 +になると仮定すれば,キャッシュミスしたときはキャッシュと本体の両方を参照することになるものの,1/5 +x 90% + 6/5 * 10% = 30% にまで平均参照時間を短縮できることになります. + +### 索引語辞書の構成はどうなるか + +これまでの内容から,索引語辞書の本体とキャッシュに求められる特徴をまとめてみました.端的に述べると,本体は空間効率重視,キャッシュは時間効率重視ということになります.ただし,本体については +Common prefix search と Predictive search +をサポートすることが求められます. + + ------------------ ------------------------------------------- -------------------------- + _=. 本体 _=. キャッシュ + _<. 参照時間 多少遅くても大丈夫 できる限り高速な方が良い + _<. 追加時間 高速な方が良い 多少遅くても大丈夫 + _<. 空間効率 高い方が良い 多少低くても大丈夫 + _<. 拡張検索 Common prefix search と Predictive search + _<. 補足事項 頻出索引語の検出 静的な構築でも大丈夫 + ------------------ ------------------------------------------- -------------------------- + +入力文書が出揃うまで頻出索引語を正確に求めることはできないため,途中経過から以降の頻出索引語を予測する必要があります.シンプルな実装は,出現頻度が閾値を超えた索引語をキャッシュに追加する,あるいは一定の条件を満たしたときにキャッシュを再構築するというものです.正確な予測はできなくても,それなりの効果を期待できるでしょう. + +今少し具体的な,つまり groonga 的な構成を示すとすれば,Bitwise +なパトリシアトライである grn_pat +を本体として,ダブル配列をキャッシュに用いるという構成になります.後は,頻出索引語を検出するために,出現頻度を格納するための領域が必要になるでしょう. + +さらなる効率化を目指すのであれば,空間効率重視の静的なデータ構造を導入し,低頻度の索引語を本体から移行するべきかもしれません.運用方法と併せて検討することが肝要です. Deleted: ja/_posts/2011-07-13-lexicon-cache.textile (+0 -75) 100644 =================================================================== --- ja/_posts/2011-07-13-lexicon-cache.textile 2016-02-07 10:35:40 +0900 (817e992) +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: post.ja -title: 索引語辞書におけるキャッシュの採用 ---- -h2. 索引語辞書におけるキャッシュの採用 - -索引語の辞書をたくさん引くのは索引を構築するタイミングですが,そのとき必要になるのは単純な参照と追加くらいです.おまけに,最頻出の索引語をほんの少しキャッシュに入れておくだけで,ほとんどのクエリはカバーできます.そうであるならば,「高頻度語を検出するための工夫は必要になるけど,十分なリターンが期待できるのはないか?」というお話です. - -written by s-yata. - -h3. 索引構築を速くするために - -全文検索用の索引を構築する上で,それなりのウェイトを占める処理の一つが索引語辞書の操作です.具体的には,入力文書から切り出された索引語を ID に変換する処理です.入力索引語が索引語辞書に登録されていなければ,新たに追加した後,割り当てた ID を返します.登録されていれば,以前の追加によって割り当てられている ID を返します. - -索引語辞書の操作を速くするのに重要なことを考えてみます. - -# まず考えつくのは,索引語辞書のデータ構造を高速なものにすることです.ただし,時間効率の高いデータ構造は空間効率の面で劣るというのが一般的です.検索対象が大規模になれば索引語辞書も大規模になってしまうので,空間効率を度外視することはできません. -# 次に考慮すべき事項として,参照と追加の比重があります.全文検索システムでは文字 N-gram や形態素を索引語とするのが一般的であり,入力文書から切り出される索引語の出現頻度は偏るので,どうしても参照の比重が大きくなります.つまり,データ構造の選定においては,追加時間より参照時間を重視すべきということです. -# また,文書を検索するときの都合により,Common prefix search や Predictive search を効率的に実現できることが理想です. -# さらに,検索を止めることなく文書を追加するには,ロックフリーな参照を実現する必要があります. - -以上のことから,ダブル配列(※)を索引語辞書のデータ構造として採用することを検討しました.しかし,索引語の出現頻度を実際に計数してみると,空間効率・時間効率ともに優れた索引語辞書の構成が見えてきました.結論を述べると,ダブル配列やハッシュ表をキャッシュとして採用するという案になります.計測によって得られた出現頻度の偏りが大きかったため,頻出索引語のみを時間効率の高いデータ構造に格納してキャッシュとし,本体には空間効率の高いデータ構造を用いることに思い至ったというわけです. - -※ ダブル配列でロックフリーな参照を実現する方法については,別の記事であらためて解説しようと思います. - -h3. 索引語の出現頻度がどのくらい偏るか - -索引語辞書にキャッシュを採用するという案の前提となっているのは,索引語の出現頻度が大きく偏ることです.そして,キャッシュの有効性を認めるに至った実験の結果が以下の表になります.頻出索引語があらかじめ分かっているものと仮定して,何件のキーをキャッシュに格納すればキャッシュヒット率が一定の値に到達するのかを調査しました. - -入力文書として用いたのは Wikipedia の記事と Twitter のつぶやきであり,索引語として試したのは文字 2-gram と MeCab による分かち書きの結果です. - -||_\8=. キー数(%)| -||_\4=. Wikipedia(日本語 + 英語)|_\4=. Twitter(日本語)| -|_=. キャッシュ|_\2=. 文字 Bigram + 英単語|_\2=. 形態素|_\2=. 文字 Bigram + 英単語|_\2=. 形態素| -|_=. ヒット率|_=. キー数|_=. %|_=. キー数|_=. %|_=. キー数|_=. %|_=. キー数|_=. %| -|_>. 10%|>. 4|>. 0.000030|>. 3|>. 0.000022|>. 14|>. 0.000121|>. 5|>. 0.000038| -|_>. 20%|>. 10|>. 0.000075|>. 8|>. 0.000058|>. 51|>. 0.000443|>. 12|>. 0.000090| -|_>. 30%|>. 32|>. 0.000241|>. 19|>. 0.000137|>. 138|>. 0.001198|>. 23|>. 0.000173| -|_>. 40%|>. 125|>. 0.000942|>. 49|>. 0.000353|>. 319|>. 0.002768|>. 44|>. 0.000331| -|_>. 50%|>. 441|>. 0.003323|>. 148|>. 0.001067|>. 729|>. 0.006327|>. 108|>. 0.000811| -|_>. 60%|>. 1,350|>. 0.010173|>. 478|>. 0.003447|>. 1,635|>. 0.014189|>. 292|>. 0.002193| -|_>. 70%|>. 3,861|>. 0.029095|>. 1,549|>. 0.011169|>. 3,834|>. 0.033273|>. 921|>. 0.006918| -|_>. 80%|>. 11,412|>. 0.085996|>. 5,163|>. 0.037228|>. 10,030|>. 0.087044|>. 3,285|>. 0.024677| -|_>. 90%|>. 45,219|>. 0.340752|>. 22,867|>. 0.164882|>. 36,247|>. 0.314565|>. 15,888|>. 0.119349| -|_>. 91%|>. 54,215|>. 0.408542|>. 27,767|>. 0.200213|>. 43,018|>. 0.373326|>. 19,481|>. 0.146340| -|_>. 92%|>. 66,059|>. 0.497793|>. 34,321|>. 0.247471|>. 51,827|>. 0.449774|>. 24,284|>. 0.182420| -|_>. 93%|>. 82,213|>. 0.619523|>. 43,428|>. 0.313137|>. 63,663|>. 0.552492|>. 30,946|>. 0.232464| -|_>. 94%|>. 105,287|>. 0.793399|>. 56,646|>. 0.408445|>. 80,116|>. 0.695277|>. 40,619|>. 0.305127| -|_>. 95%|>. 140,105|>. 1.055773|>. 77,469|>. 0.558589|>. 104,166|>. 0.903992|>. 55,395|>. 0.416123| -|_>. 96%|>. 196,848|>. 1.483365|>. 113,521|>. 0.818541|>. 141,727|>. 1.229961|>. 79,754|>. 0.599106| -|_>. 97%|>. 300,097|>. 2.261407|>. 185,761|>. 1.339427|>. 206,542|>. 1.792450|>. 125,518|>. 0.942882| -|_>. 98%|>. 527,496|>. 3.974991|>. 369,337|>. 2.663098|>. 339,842|>. 2.949277|>. 234,680|>. 1.762899| -|_>. 99%|>. 1,294,298|>. 9.753293|>. 1,145,987|>. 8.263120|>. 750,373|>. 6.512021|>. 731,192|>. 5.492659| -<!-- |_>. 100%|>. 13,270,369|>. 100.000000|>. 13,868,696|>. 100.000000|>. 11,522,890|>. 100.000000|>. 13,312,167|>. 100.000000| --> - -実験結果を見ると,キャッシュヒット率が 90% を超えるくらいに調整したとき,キャッシュに含まれる索引語の割合は全体の 1% にも満たないことが分かります.つまり,空間効率の低いデータ構造をキャッシュとして採用したところで,索引語辞書のサイズにはほとんど影響しません.一方で,時間効率の高いデータ構造を採用すれば,索引構築にかかる時間を大幅に短縮できます. - -たとえば,キャッシュヒット率を 90% に調整すると,キャッシュが索引語 1 つあたりに必要とするサイズが本体のそれと比べて 5 倍でも,全体の 5% にも満たないということです.また,キャッシュの参照時間が本体の 1/5 になると仮定すれば,キャッシュミスしたときはキャッシュと本体の両方を参照することになるものの,1/5 x 90% + 6/5 * 10% = 30% にまで平均参照時間を短縮できることになります. - -h3. 索引語辞書の構成はどうなるか - -これまでの内容から,索引語辞書の本体とキャッシュに求められる特徴をまとめてみました.端的に述べると,本体は空間効率重視,キャッシュは時間効率重視ということになります.ただし,本体については Common prefix search と Predictive search をサポートすることが求められます. - -||_=. 本体|_=. キャッシュ| -|_<. 参照時間|多少遅くても大丈夫|できる限り高速な方が良い| -|_<. 追加時間|高速な方が良い|多少遅くても大丈夫| -|_<. 空間効率|高い方が良い|多少低くても大丈夫| -|_<. 拡張検索|Common prefix search と Predictive search|| -|_<. 補足事項|頻出索引語の検出|静的な構築でも大丈夫| - -入力文書が出揃うまで頻出索引語を正確に求めることはできないため,途中経過から以降の頻出索引語を予測する必要があります.シンプルな実装は,出現頻度が閾値を超えた索引語をキャッシュに追加する,あるいは一定の条件を満たしたときにキャッシュを再構築するというものです.正確な予測はできなくても,それなりの効果を期待できるでしょう. - -今少し具体的な,つまり groonga 的な構成を示すとすれば,Bitwise なパトリシアトライである grn_pat を本体として,ダブル配列をキャッシュに用いるという構成になります.後は,頻出索引語を検出するために,出現頻度を格納するための領域が必要になるでしょう. - -さらなる効率化を目指すのであれば,空間効率重視の静的なデータ構造を導入し,低頻度の索引語を本体から移行するべきかもしれません.運用方法と併せて検討することが肝要です. Added: ja/_posts/2011-07-28-innodb-fts.md (+94 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2011-07-28-innodb-fts.md 2016-02-07 10:50:24 +0900 (bdabc23) @@ -0,0 +1,94 @@ +--- +layout: post.ja +title: InnoDB純正の全文検索エンジンInnoDB FTS +--- +h2. InnoDB純正の全文検索エンジンInnoDB FTS + +つい先日、MySQL-5.6.3-labs版がリリースがされました。この中にはInnoDBで動作する全文検索エンジン"InnoDB +FTS"が含まれています。これまでは、MySQLとInnoDBの組み合わせで全文検索を行うためにはサードパーティの製品([mroonga](http://mroonga.org/) +等..)が必要でしたが、これでズバっと選択肢が広がることになります。しかもInnoDBの開発チームが自ら開発した"純正の"エンジンということですから、これは大きな期待が持てます。 + +いったいどのような製品に仕上がっているのか、ざっくり記事やソースを読んで得た感触を述べてみたいと思います。 + +written by [daijiro.mori](http://twitter.com/#!/daijiro) + +### どんなエンジンか? + +エンジンの概要については、 [Overview and Getting Started with InnoDB +FTS](http://blogs.innodb.com/wp/2011/07/overview-and-getting-started-with-innodb-fts/) +という記事によくまとまっていますが、Solr/LuceneやNamazuなどと同じく、転置索引方式の検索エンジンとなっています。転置索引方式といえばMyISAMのFTS実装もそうなのですが、MyISAM +FTSとInnoDB +FTSの最も大きな違いは後者が完全転置索引を採用している点です。完全転置索引とは、全文検索インデックスの中に、該当するワードが埋まっている文書IDだけでなく、それが文書中に出現した位置情報もすべて記録するタイプの転置索引を指します。 + +完全転置索引は、索引のサイズが大きくなり、構築により多くの時間を要するというデメリットがありますが、フレーズ検索や近傍検索(proximity +search)を正確かつ高速に実行できるというメリットがあります。日本語のような非分かち書き言語を扱う場合、これは非常に重要なポイントとなります。(ちなみに他のFLOSS全文検索エンジンでは、Solr/Lucene, +Senna/groongaは完全転置索引を採用しており、Namazu, Hyper +Estraier等は採用していません。Sphinxは位置情報は全て記録しているのですが、正確な語彙表を持たないため、検索結果はやや不正確になります。) + +話を戻すと、InnoDB +FTSは、トークナイザなどが適宜整備されれば日本語全文検索のソリューションとして、MyISAM +FTSよりもずっと実用的なものになることが期待できるということです。 + +### どんな設計か? + +InnoDB純正の全文検索エンジンだけあって、転置索引の実体もまたInnoDBの表によって実装されています。転置索引を一つ定義すると、InnoDB内部ではいくつかの補助表が作られます。この中の一つが転置索引の実体に相当します。転置索引補助表は、word, +first_doc_id, last_doc_id, doc_count, +ilistという5つのカラムを持っています。wordカラムには検索対象をトークナイズして得られた各文字列が、ilistカラムにはその文字列に対応する転置索引のポスティング情報が格納されます。ilistカラムの値は以下のような情報をBER圧縮したバイト列になっています。 + + [ + [ + 最初の文書ID, + [ + 文書内の最初の出現バイト位置, + 文書内の出現バイト位置の差分, + .., + 0 + ] + ], + [ + 文書IDの差分, + [ + 文書内の最初の出現バイト位置, + 文書内の出現バイト位置の差分, + .., + 0 + ] + ], + .. + ] + +一つのwordに該当する転置索引のエントリは、転置索引補助表の複数のレコードに分割して格納され、それぞれのレコードに含まれる文書IDの範囲はfirst_doc_id, +last_doc_idカラムの値によって知ることができます。 + +### リアルタイム更新性能は? + +ところでRDB上で動作する全文検索エンジンなのですから、当然リアルタイムに転置索引を更新したいという要件があるはずです。InnoDB +FTSはInnoDB上に構築されているわけですから、その更新性能がそのまま享受できそうなものなのですが、転置索引に特有の事情がやや絡んでいます。どういうことかと言いますと。。 + +一つの文書をトークナイズすると複数の(場合によっては大量の)wordが得られます。つまり文書が1レコード追加されると、背後では大量の更新クエリに相当することになります。これらを転置索引補助表に逐次反映していると、索引が断片化してしまうし更新性能も低下してしまうのです。そこで、InnoDB +FTSでは赤黒木で実装したメモリ内のキャッシュ(Index +Cache)に一旦これらの情報を蓄積しておいて、Index +Cacheがいっぱいになったらマージした上で転置索引補助表に反映するようにしています。 + +InnoDB +FTSに限らず、全文検索インデックスの動的更新はどのエンジンにとっても難易度の高いテーマです。手前味噌なのですが、実はSenna/groongaでもInnoDB +FTSと同様に、メモリ上のキャッシュと、圧縮転置索引という二段構えの構成を採用しています。(ですので個人的にはInnoDB +FTSの設計は好感が持てますw) + +もう一つ世の中でよく使われる定番方式として、 [Introduction to +Information +Retrieval](http://nlp.stanford.edu/IR-book/information-retrieval-book.html) +にも載っているLogarithmic +Mergingというものがあります。要は索引を何世代も小分けに作っておいて、それがたまってきたらマージする、という処理を再帰的に繰り返すのです。Solr/Luceneはこの方式を採用しています。しかし、この方式のエンジンでリアルタイム検索をこなそうとすると、間欠的に性能が落ち込むことになるため、実用的にはやや使いづらいものになってしまいます。 + +話を戻すと、InnoDB +FTSはリアルタイム検索エンジンのソリューションとしても実用性が高いものになるかも知れない、ということです。 + +### 日本語対応は? + +現状ではまだCJKには対応していません。しかし、N-GRAMトークナイザをサポートしたい、と先ほどの記事にも書いてあるので、近い将来サポートされるかも知れません。他にも、並列処理性能を高めるために、転置索引補助表がwordの先頭バイトによっていくつかに分割されていて、それが思いっきりハードコーディングされていたりする等、CJK対応の際に修正が必要な点がいくつかありますが、いずれもそれほど大きな問題ではないように思います。 + +### まとめ + +リリースされたばかりのInnoDB +FTSですが、日本語全文検索エンジンとして実用的な製品となることが期待できるだけでなく、リアルタイム検索にも適した設計となっています。ただ、転置索引の実体がInnoDBの表によって実装されているのは、長所であると同時に、短所にもつながるかもしれないような予感もしています。なんとなくですが。。 Deleted: ja/_posts/2011-07-28-innodb-fts.textile (+0 -69) 100644 =================================================================== --- ja/_posts/2011-07-28-innodb-fts.textile 2016-02-07 10:35:40 +0900 (a1d9e17) +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: post.ja -title: InnoDB純正の全文検索エンジンInnoDB FTS ---- -h2. InnoDB純正の全文検索エンジンInnoDB FTS - -つい先日、MySQL-5.6.3-labs版がリリースがされました。この中にはInnoDBで動作する全文検索エンジン"InnoDB FTS"が含まれています。これまでは、MySQLとInnoDBの組み合わせで全文検索を行うためにはサードパーティの製品("mroonga":http://mroonga.org/ 等..)が必要でしたが、これでズバっと選択肢が広がることになります。しかもInnoDBの開発チームが自ら開発した"純正の"エンジンということですから、これは大きな期待が持てます。 - -いったいどのような製品に仕上がっているのか、ざっくり記事やソースを読んで得た感触を述べてみたいと思います。 - -written by "daijiro.mori":http://twitter.com/#!/daijiro - -h3. どんなエンジンか? - -エンジンの概要については、 "Overview and Getting Started with InnoDB FTS":http://blogs.innodb.com/wp/2011/07/overview-and-getting-started-with-innodb-fts/ という記事によくまとまっていますが、Solr/LuceneやNamazuなどと同じく、転置索引方式の検索エンジンとなっています。転置索引方式といえばMyISAMのFTS実装もそうなのですが、MyISAM FTSとInnoDB FTSの最も大きな違いは後者が完全転置索引を採用している点です。完全転置索引とは、全文検索インデックスの中に、該当するワードが埋まっている文書IDだけでなく、それが文書中に出現した位置情報もすべて記録するタイプの転置索引を指します。 - -完全転置索引は、索引のサイズが大きくなり、構築により多くの時間を要するというデメリットがありますが、フレーズ検索や近傍検索(proximity search)を正確かつ高速に実行できるというメリットがあります。日本語のような非分かち書き言語を扱う場合、これは非常に重要なポイントとなります。(ちなみに他のFLOSS全文検索エンジンでは、Solr/Lucene, Senna/groongaは完全転置索引を採用しており、Namazu, Hyper Estraier等は採用していません。Sphinxは位置情報は全て記録しているのですが、正確な語彙表を持たないため、検索結果はやや不正確になります。) - -話を戻すと、InnoDB FTSは、トークナイザなどが適宜整備されれば日本語全文検索のソリューションとして、MyISAM FTSよりもずっと実用的なものになることが期待できるということです。 - -h3. どんな設計か? - -InnoDB純正の全文検索エンジンだけあって、転置索引の実体もまたInnoDBの表によって実装されています。転置索引を一つ定義すると、InnoDB内部ではいくつかの補助表が作られます。この中の一つが転置索引の実体に相当します。転置索引補助表は、word, first_doc_id, last_doc_id, doc_count, ilistという5つのカラムを持っています。wordカラムには検索対象をトークナイズして得られた各文字列が、ilistカラムにはその文字列に対応する転置索引のポスティング情報が格納されます。ilistカラムの値は以下のような情報をBER圧縮したバイト列になっています。 - -<pre> -[ - [ - 最初の文書ID, - [ - 文書内の最初の出現バイト位置, - 文書内の出現バイト位置の差分, - .., - 0 - ] - ], - [ - 文書IDの差分, - [ - 文書内の最初の出現バイト位置, - 文書内の出現バイト位置の差分, - .., - 0 - ] - ], - .. -] -</pre> - -一つのwordに該当する転置索引のエントリは、転置索引補助表の複数のレコードに分割して格納され、それぞれのレコードに含まれる文書IDの範囲はfirst_doc_id, last_doc_idカラムの値によって知ることができます。 - -h3. リアルタイム更新性能は? - -ところでRDB上で動作する全文検索エンジンなのですから、当然リアルタイムに転置索引を更新したいという要件があるはずです。InnoDB FTSはInnoDB上に構築されているわけですから、その更新性能がそのまま享受できそうなものなのですが、転置索引に特有の事情がやや絡んでいます。どういうことかと言いますと。。 - -一つの文書をトークナイズすると複数の(場合によっては大量の)wordが得られます。つまり文書が1レコード追加されると、背後では大量の更新クエリに相当することになります。これらを転置索引補助表に逐次反映していると、索引が断片化してしまうし更新性能も低下してしまうのです。そこで、InnoDB FTSでは赤黒木で実装したメモリ内のキャッシュ(Index Cache)に一旦これらの情報を蓄積しておいて、Index Cacheがいっぱいになったらマージした上で転置索引補助表に反映するようにしています。 - -InnoDB FTSに限らず、全文検索インデックスの動的更新はどのエンジンにとっても難易度の高いテーマです。手前味噌なのですが、実はSenna/groongaでもInnoDB FTSと同様に、メモリ上のキャッシュと、圧縮転置索引という二段構えの構成を採用しています。(ですので個人的にはInnoDB FTSの設計は好感が持てますw) - -もう一つ世の中でよく使われる定番方式として、 "Introduction to Information Retrieval":http://nlp.stanford.edu/IR-book/information-retrieval-book.html にも載っているLogarithmic Mergingというものがあります。要は索引を何世代も小分けに作っておいて、それがたまってきたらマージする、という処理を再帰的に繰り返すのです。Solr/Luceneはこの方式を採用しています。しかし、この方式のエンジンでリアルタイム検索をこなそうとすると、間欠的に性能が落ち込むことになるため、実用的にはやや使いづらいものになってしまいます。 - -話を戻すと、InnoDB FTSはリアルタイム検索エンジンのソリューションとしても実用性が高いものになるかも知れない、ということです。 - -h3. 日本語対応は? - -現状ではまだCJKには対応していません。しかし、N-GRAMトークナイザをサポートしたい、と先ほどの記事にも書いてあるので、近い将来サポートされるかも知れません。他にも、並列処理性能を高めるために、転置索引補助表がwordの先頭バイトによっていくつかに分割されていて、それが思いっきりハードコーディングされていたりする等、CJK対応の際に修正が必要な点がいくつかありますが、いずれもそれほど大きな問題ではないように思います。 - -h3. まとめ - -リリースされたばかりのInnoDB FTSですが、日本語全文検索エンジンとして実用的な製品となることが期待できるだけでなく、リアルタイム検索にも適した設計となっています。ただ、転置索引の実体がInnoDBの表によって実装されているのは、長所であると同時に、短所にもつながるかもしれないような予感もしています。なんとなくですが。。 Added: ja/_posts/2011-10-29-release.md (+21 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2011-10-29-release.md 2016-02-07 10:50:24 +0900 (f523939) @@ -0,0 +1,21 @@ +--- +layout: post.ja +title: groonga 1.2.7, groongaストレージエンジン 1.0.1リリース +--- +h2. groonga 1.2.7, groongaストレージエンジン 1.0.1リリース + +今月もgroongaとgroongaストレージエンジンをリリースしました。 + +* [groonga +1.2.7での変更点](http://groonga.org/ja/docs/news.html#release-1-2-7) + * [groongaストレージエンジン +1.0.1での変更点](http://mroonga.org/ja/docs/news.html#release-1-0-1) + +ここ数リリースで位置情報検索まわりを強化していて、groongaストレージエンジンはMyISAMよりも高速に動作するようになっています。もう少し高速化案があるので、次のリリースでも位置情報検索まわりが改良されるでしょう。 + +2011/11/29の [全文検索エンジンgroongaを囲む夕べ +2](atnd.org/events/20446) の前の2011/11/05(土)に +[オープンソースカンファレンス2011 .DB](http://www.ospn.jp/osc2011.db/) +の [OSSDB +MySQL](http://www.ospn.jp/osc2011.db/modules/eguide/event.php?eid=15) +におじゃまして少しだけgroongaストレージエンジンを紹介します。こちらにもぜひ参加してみてください。 Deleted: ja/_posts/2011-10-29-release.textile (+0 -14) 100644 =================================================================== --- ja/_posts/2011-10-29-release.textile 2016-02-07 10:35:40 +0900 (6bfc4a7) +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: post.ja -title: groonga 1.2.7, groongaストレージエンジン 1.0.1リリース ---- -h2. groonga 1.2.7, groongaストレージエンジン 1.0.1リリース - -今月もgroongaとgroongaストレージエンジンをリリースしました。 - - * "groonga 1.2.7での変更点":http://groonga.org/ja/docs/news.html#release-1-2-7 - * "groongaストレージエンジン 1.0.1での変更点":http://mroonga.org/ja/docs/news.html#release-1-0-1 - -ここ数リリースで位置情報検索まわりを強化していて、groongaストレージエンジンはMyISAMよりも高速に動作するようになっています。もう少し高速化案があるので、次のリリースでも位置情報検索まわりが改良されるでしょう。 - -2011/11/29の "全文検索エンジンgroongaを囲む夕べ 2":atnd.org/events/20446 の前の2011/11/05(土)に "オープンソースカンファレンス2011 .DB":http://www.ospn.jp/osc2011.db/ の "OSSDB MySQL":http://www.ospn.jp/osc2011.db/modules/eguide/event.php?eid=15 におじゃまして少しだけgroongaストレージエンジンを紹介します。こちらにもぜひ参加してみてください。 Added: ja/_posts/2011-11-08-grn_dat.md (+173 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2011-11-08-grn_dat.md 2016-02-07 10:50:24 +0900 (b2ce646) @@ -0,0 +1,173 @@ +--- +layout: post.ja +title: grn_dat - 参照ロックフリーなダブル配列 +--- + +grn_dat - 参照ロックフリーなダブル配列 +--------------------------------------- + +注意: +トライやダブル配列に関する知識があっても何のことやらサッパリ分からないかもしれません. + +written by Susumu Yata. + +### はじめに + +grn_dat は,キーと ID の関連付けに用いるモジュール grn_pat, grn_hash +の新しい仲間です.Common prefix search と Predictive search +をサポートしつつ,高速な参照を実現します.その代わり,メモリ消費が大きいという欠点があります.特性を簡単にまとめると以下のようになります. + + ----------- ------------------ ---------- ---------- ---------- + データ構造 検索機能 時間効率 空間効率 + grn_pat パトリシアトライ ◎ △ ◎ + grn_hash ハッシュ表 △ ◎ ○ + grn_dat ダブル配列 ○ ○ △ + ----------- ------------------ ---------- ---------- ---------- + +grn_dat の役割は,grn_pat, grn_hash の隙間を埋めることです.Common +prefix search や Predictive search が必要だけど,grn_pat +では十分な速度が確保できないという悩みを解決します.また,grn_pat, +grn_hash で課題となっていた「ID +を変更せずにキーのみを差し替える機能」を持っているので,groonga +の使い勝手を向上させるという面でも活躍します. + +もちろん,groonga +の特徴である参照ロックフリーを実現しているため,更新をおこなってしているときでも,別のプロセス・スレッドでは問題なく参照できます. + +### データ構造 + +grn_dat +の基本的なデータ構造はダブル配列です.ただし,単純な実装ではキーと ID +の相互参照およびに参照ロックフリーを実現できないため,いくつかの拡張を施しています. + +キーと ID の相互参照に関する拡張では,キーを入力して ID +を求めるだけでなく,ID +を入力してキーを取得するという使い方も想定しているので,本来のダブル配列ではキーの後半部分のみを残すのに対し,grn_dat +ではキー全体を残すようにしました.結果として,最小接頭辞(Minimal +prefix)トライ,キーを詰め込むためのプール,ID +からキーの格納位置を求めるための配列という構成になっています.キーを入力したときは,まずトライを探索し,葉からキーのプールへのリンクをたどることになります.一方,ID +を入力したときは,ID +からキーの格納位置を求めて,キーのプールを参照することになります. + +参照ロックフリーについては,ノードの再利用を禁止するとともに,CHECK +の内容を親のノード番号からラベルに変更しました.また,これらの変更によって生じる問題を解決するため,ノードをブロック単位で管理するようにしただけでなく,従来とは少し異なる管理方法を採用しました.さらに,削除・更新における問題を解決するため,葉に +ID を持たせるのではなく,葉にはキーの格納位置を持たせ,キーのプールに ID +を格納するようにしました.詳細は後述します. + +### 参照ロックフリー + +groonga +の魅力的な特徴の一つが参照ロックフリーです.更新しているから参照できない,あるいは参照しているから更新できないということがなく,応答性・即時性の高いシステムを実現できます.groonga +のモジュールである grn_dat は,もちろん参照ロックフリーです. + +#### ノードの再利用 + +残念ながら,本来のダブル配列は参照ロックフリーなデータ構造ではありません.更新によってノードの配置が変化したり,破棄された領域が再利用されたりと忙しいため,更新と並行して参照をおこなうと,どこに行き着くのか想像もつきません.たとえば,参照において,あるノードにたどり着いたとき,そのノードが更新によって破棄,再利用されると,まるで別のパスをたどってきたかのように見えてしまいます.この問題は,存在しないはずのキーが見つかったり(False +positive),逆に存在するはずのキーが見つからなかったり(False +negative)という誤りにつながります. + +そこで,ノードの再利用はしないという方針が生まれます.具体的には,ノードの移動に際して,新しいノードを配置するだけで,古いノードはそのままにしておくという手法です.移動したノードの数に比例して無駄な領域が増えるという欠点はあるものの,上述の参照誤りは防ぐことができます.空間効率の悪化については,あらかじめ確保しておいた領域を使い切った時点で,領域の拡張と併せて無駄なノードの除去もおこなうことにより改善できます. + +#### 親子関係の表現 + +次に重要な問題は,本来のダブル配列ではノードの移動をアトミックに実現できないことです.例として,あるノード +S が親ノード P と子ノード C を持つ状態から,ノード S をノード S' +に移動するとき,つまり親子関係はそのままにノード番号が S から S' +に変更するときを考えてみます.移動前の状態では,ノード P, S, C +の親子関係は以下のように表現されています. + + BASE[P] ⊕ LABEL[S] = S; // ⊕ は排他的論理和(XOR)の意味で用いています. + CHECK[C] = S; + +次に,ノード S の移動後は以下のようになります.LABEL[S] はノード S +のラベルであり,LABEL[S'] とは等しくなります. + + BASE[P] ⊕ LABEL[S'] = S'; + CHECK[C] = S'; + +すなわち,BASE[P] と CHECK[C] +の書き換えによって親子関係が引き継がれることになります. + +問題が顕在化するのは,CHECK[C] が更新されていない状況でノード S' +に到達したときと,CHECK[C] が更新されている状況でノード S +に到達したときです.前者は BASE[P] を先に更新したとき,後者は +CHECK[C] を先に更新したときに発生する可能性があります.そして,ノード +P の子ノード(ノード S とその兄弟ノード)と孫ノード(ノード S +の子・甥・姪ノード)がたくさんあるときは,整合性の取れない状態が長く続くため,問題が顕在化しやすくなります. + +この問題を解決する方法は,CHECK +に格納する内容を親のノード番号からラベルに変更し,ノード P, S, C +の親子関係を以下のように表現することです. + + BASE[P] ⊕ LABEL[S] = S; // 従来と同じです. + CHECK[C] = LABEL[C]; // S から LABEL[C] になりました. + +ノード S の移動後は以下のようになります. + + BASE[P] ⊕ LABEL[S'] = S'; // 従来と同じです. + CHECK[C] = LABEL[C]; // S' から LABEL[C] になりました. + +つまり,BASE[P] は従来と同様に書き換えますが,CHECK[C] +は書き換えなくてもよくなります.BASE[P] +の書き換えのみであれば,アトミックな操作になるため,整合性の取れないタイミングをなくすことが可能です. + +#### 未使用領域の管理 + +ノードの再利用を禁止し,CHECK +の内容をラベルに変更して,さらにフラグの設定と値の更新などをまとめてアトミックな操作にすれば,参照ロックフリーなダブル配列は実現できます.しかし,衝突が起きたときに兄弟ノードが少ない方を選んで移動するという経験則が適用できなくなるため,従来のダブル配列と比べて移動すべきノードが多くなり,移動先の選定にかかる時間がとても長くなるという問題があります.主因はノードの再利用を禁止したことですが,CHECK +の内容をラベルに変更するだけでも,衝突が起きたノードの親が分からなくなるので同様の問題にたどり着きます. + +移動するノードの数が多くなるような状況では,未使用領域をブロック単位で管理し,無駄な探索を減らす手法が有効です.具体的には,兄弟ノードが同じブロックに配置されるようにブロックのサイズを設定し,各ブロックに未使用領域の大きさを持たせたり,ブロック内部の未使用領域を連結リストで管理したり,未使用領域の割合によってブロックを別々に管理したりします.ブロック単位で探索をスキップできるので,未使用領域を一つずつ確認するより効率的になります. + +注目すべきことは,隙間なく詰め込むと次の更新でノードを移動する以外の手段がなくなることです.意外なことに,各ブロックに隙間なく詰め込むより,隙間が残るようにパラメータを選択した方が時間効率・空間効率ともに良い性能を示します. + +#### キーの差し替え + +grn_pat, grn_hash に対して grn_dat の特徴的なところは,ID +を変更せずにキーのみを差し替える機能を持っていることです.実装については,新しいキーを登録して古いキーを無効にするだけです.ただし,すぐに +ID を再利用するため,トライの葉に ID +を持たせる構成では,古いキーを参照しようとして到達した葉から新しいキーにアクセスしてしまう可能性があります.そして,クエリとキーの後半部分のみで照合していると,存在しないはずのキーが見つかるという問題につながります. + +キーの差し替えによって生じる問題の単純な解決方法は,クエリとキーの前半部分も照合の対象に含めることです.しかし,トライの利点である +Common prefix search や Predictive search +の効率が大幅に悪化してしまいます. + +そこで,grn_dat では,葉にキーの格納位置を持たせ,キーのプールに ID +を格納するようにしています.これにより,キーの差し替えによって別のキーにアクセスしてしまう問題は解決されます.また,ID +からキーの格納位置に変換する必要がなくなるため,参照の時間効率は少しだけ向上します. + +### ラベルによる連結 + +トライの代表的な機能の一つが Predictive search +です.しかし,長子と次の兄弟へのポインタを各ノードが持つようなトライと比べると,ダブル配列は +Predictive search を苦手とします.理由は,ラベルの種類数を m +とするとき,子ノードの列挙にかかる時間計算量が O (m) +になるからです.長子と次の兄弟へのポインタを各ノードが持っていれば,時間計算量は子ノードの数によって抑えられます.トライの根から +Predictive search +を実行するとき,葉では子ノードを列挙しなくてもよいという例外を無視して考えると,すべてのノードにおいて子ノードを列挙することになるため,ダブル配列の時間計算量は +m 倍ということになります. + +そこで,grn_dat +では,長子と次の兄弟へのポインタに代わる存在として,長子と次の兄弟のラベルを各ノードに持たせるようにしています.たとえば,ノード +S について,長子のラベルを FIRST_CHILD[S],次の兄弟のラベルを +NEXT_SIBLING[S] とすると,長子ノード X と次の兄弟ノード Y +は以下のように求められます. + + X = BASE[S] ⊕ FIRST_CHILD[S]; // ⊕ は排他的論理和(XOR)の意味で用いています. + Y = S ⊕ LABEL[S] ⊕ NEXT_SIBLING[S]; + +ポインタやノード番号を持たせるよりはラベルの方がコンパクトで済み,効率的な +Predictive search を実現できるようになります.また,CHECK +をラベルに変更したことで余った領域の使い道としての意味もあります. + +### 領域の拡張 + +ノードの再利用を禁止している grn_dat +では,徐々に拡張していくという方式を採用すると,古い情報が蓄積して空間効率がとても悪くなってしまいます.そこで,領域が不足すると一気に拡張するという方式を採用しました.具体的には,新しく大きな領域を確保して,必要な情報のみを移行するようにしています.また,プールに格納されているキーを辞書順に整列することで,Common +prefix search や Predictive search の効率化を図っています. + +### おわりに + +すぐに終わると思って書き始めたドキュメントなのですが,途中で力尽きるくらい長いものになってしまいました.しかも,ダブル配列の実装をしたことのない人にとっては意味不明な内容になっています.「はじめに」を書いていたときは,そんなつもりはなかったのですが….そもそも,本格的なテストの前に +API +の仕様をきっちりドキュメントにしておこうという動機だったはずなのに,何がどうなって実装方法のドキュメントになったのでしょうか.謎です. Deleted: ja/_posts/2011-11-08-grn_dat.textile (+0 -114) 100644 =================================================================== --- ja/_posts/2011-11-08-grn_dat.textile 2016-02-07 10:35:40 +0900 (2580b1d) +++ /dev/null @@ -1,114 +0,0 @@ ---- -layout: post.ja -title: grn_dat - 参照ロックフリーなダブル配列 ---- - -h2. grn_dat - 参照ロックフリーなダブル配列 - -注意: トライやダブル配列に関する知識があっても何のことやらサッパリ分からないかもしれません. - -written by Susumu Yata. - -h3. はじめに - -grn_dat は,キーと ID の関連付けに用いるモジュール grn_pat, grn_hash の新しい仲間です.Common prefix search と Predictive search をサポートしつつ,高速な参照を実現します.その代わり,メモリ消費が大きいという欠点があります.特性を簡単にまとめると以下のようになります. - -| |データ構造 |検索機能|時間効率|空間効率| -|grn_pat |パトリシアトライ|◎|△|◎| -|grn_hash|ハッシュ表 |△|◎|○| -|grn_dat |ダブル配列 |○|○|△| - -grn_dat の役割は,grn_pat, grn_hash の隙間を埋めることです.Common prefix search や Predictive search が必要だけど,grn_pat では十分な速度が確保できないという悩みを解決します.また,grn_pat, grn_hash で課題となっていた「ID を変更せずにキーのみを差し替える機能」を持っているので,groonga の使い勝手を向上させるという面でも活躍します. - -もちろん,groonga の特徴である参照ロックフリーを実現しているため,更新をおこなってしているときでも,別のプロセス・スレッドでは問題なく参照できます. - -h3. データ構造 - -grn_dat の基本的なデータ構造はダブル配列です.ただし,単純な実装ではキーと ID の相互参照およびに参照ロックフリーを実現できないため,いくつかの拡張を施しています. - -キーと ID の相互参照に関する拡張では,キーを入力して ID を求めるだけでなく,ID を入力してキーを取得するという使い方も想定しているので,本来のダブル配列ではキーの後半部分のみを残すのに対し,grn_dat ではキー全体を残すようにしました.結果として,最小接頭辞(Minimal prefix)トライ,キーを詰め込むためのプール,ID からキーの格納位置を求めるための配列という構成になっています.キーを入力したときは,まずトライを探索し,葉からキーのプールへのリンクをたどることになります.一方,ID を入力したときは,ID からキーの格納位置を求めて,キーのプールを参照することになります. - -参照ロックフリーについては,ノードの再利用を禁止するとともに,CHECK の内容を親のノード番号からラベルに変更しました.また,これらの変更によって生じる問題を解決するため,ノードをブロック単位で管理するようにしただけでなく,従来とは少し異なる管理方法を採用しました.さらに,削除・更新における問題を解決するため,葉に ID を持たせるのではなく,葉にはキーの格納位置を持たせ,キーのプールに ID を格納するようにしました.詳細は後述します. - -h3. 参照ロックフリー - -groonga の魅力的な特徴の一つが参照ロックフリーです.更新しているから参照できない,あるいは参照しているから更新できないということがなく,応答性・即時性の高いシステムを実現できます.groonga のモジュールである grn_dat は,もちろん参照ロックフリーです. - -h4. ノードの再利用 - -残念ながら,本来のダブル配列は参照ロックフリーなデータ構造ではありません.更新によってノードの配置が変化したり,破棄された領域が再利用されたりと忙しいため,更新と並行して参照をおこなうと,どこに行き着くのか想像もつきません.たとえば,参照において,あるノードにたどり着いたとき,そのノードが更新によって破棄,再利用されると,まるで別のパスをたどってきたかのように見えてしまいます.この問題は,存在しないはずのキーが見つかったり(False positive),逆に存在するはずのキーが見つからなかったり(False negative)という誤りにつながります. - -そこで,ノードの再利用はしないという方針が生まれます.具体的には,ノードの移動に際して,新しいノードを配置するだけで,古いノードはそのままにしておくという手法です.移動したノードの数に比例して無駄な領域が増えるという欠点はあるものの,上述の参照誤りは防ぐことができます.空間効率の悪化については,あらかじめ確保しておいた領域を使い切った時点で,領域の拡張と併せて無駄なノードの除去もおこなうことにより改善できます. - -h4. 親子関係の表現 - -次に重要な問題は,本来のダブル配列ではノードの移動をアトミックに実現できないことです.例として,あるノード S が親ノード P と子ノード C を持つ状態から,ノード S をノード S' に移動するとき,つまり親子関係はそのままにノード番号が S から S' に変更するときを考えてみます.移動前の状態では,ノード P, S, C の親子関係は以下のように表現されています. - -<pre> -BASE[P] ⊕ LABEL[S] = S; // ⊕ は排他的論理和(XOR)の意味で用いています. -CHECK[C] = S; -</pre> - -次に,ノード S の移動後は以下のようになります.LABEL[S] はノード S のラベルであり,LABEL[S'] とは等しくなります. - -<pre> -BASE[P] ⊕ LABEL[S'] = S'; -CHECK[C] = S'; -</pre> - -すなわち,BASE[P] と <notextile>CHECK[C]</notextile> の書き換えによって親子関係が引き継がれることになります. - -問題が顕在化するのは,<notextile>CHECK[C]</notextile> が更新されていない状況でノード S' に到達したときと,<notextile>CHECK[C]</notextile> が更新されている状況でノード S に到達したときです.前者は BASE[P] を先に更新したとき,後者は <notextile>CHECK[C]</notextile> を先に更新したときに発生する可能性があります.そして,ノード P の子ノード(ノード S とその兄弟ノード)と孫ノード(ノード S の子・甥・姪ノード)がたくさんあるときは,整合性の取れない状態が長く続くため,問題が顕在化しやすくなります. - -この問題を解決する方法は,CHECK に格納する内容を親のノード番号からラベルに変更し,ノード P, S, C の親子関係を以下のように表現することです. - -<pre> -BASE[P] ⊕ LABEL[S] = S; // 従来と同じです. -CHECK[C] = LABEL[C]; // S から LABEL[C] になりました. -</pre> - -ノード S の移動後は以下のようになります. - -<pre> -BASE[P] ⊕ LABEL[S'] = S'; // 従来と同じです. -CHECK[C] = LABEL[C]; // S' から LABEL[C] になりました. -</pre> - -つまり,BASE[P] は従来と同様に書き換えますが,<notextile>CHECK[C]</notextile> は書き換えなくてもよくなります.BASE[P] の書き換えのみであれば,アトミックな操作になるため,整合性の取れないタイミングをなくすことが可能です. - -h4. 未使用領域の管理 - -ノードの再利用を禁止し,CHECK の内容をラベルに変更して,さらにフラグの設定と値の更新などをまとめてアトミックな操作にすれば,参照ロックフリーなダブル配列は実現できます.しかし,衝突が起きたときに兄弟ノードが少ない方を選んで移動するという経験則が適用できなくなるため,従来のダブル配列と比べて移動すべきノードが多くなり,移動先の選定にかかる時間がとても長くなるという問題があります.主因はノードの再利用を禁止したことですが,CHECK の内容をラベルに変更するだけでも,衝突が起きたノードの親が分からなくなるので同様の問題にたどり着きます. - -移動するノードの数が多くなるような状況では,未使用領域をブロック単位で管理し,無駄な探索を減らす手法が有効です.具体的には,兄弟ノードが同じブロックに配置されるようにブロックのサイズを設定し,各ブロックに未使用領域の大きさを持たせたり,ブロック内部の未使用領域を連結リストで管理したり,未使用領域の割合によってブロックを別々に管理したりします.ブロック単位で探索をスキップできるので,未使用領域を一つずつ確認するより効率的になります. - -注目すべきことは,隙間なく詰め込むと次の更新でノードを移動する以外の手段がなくなることです.意外なことに,各ブロックに隙間なく詰め込むより,隙間が残るようにパラメータを選択した方が時間効率・空間効率ともに良い性能を示します. - -h4. キーの差し替え - -grn_pat, grn_hash に対して grn_dat の特徴的なところは,ID を変更せずにキーのみを差し替える機能を持っていることです.実装については,新しいキーを登録して古いキーを無効にするだけです.ただし,すぐに ID を再利用するため,トライの葉に ID を持たせる構成では,古いキーを参照しようとして到達した葉から新しいキーにアクセスしてしまう可能性があります.そして,クエリとキーの後半部分のみで照合していると,存在しないはずのキーが見つかるという問題につながります. - -キーの差し替えによって生じる問題の単純な解決方法は,クエリとキーの前半部分も照合の対象に含めることです.しかし,トライの利点である Common prefix search や Predictive search の効率が大幅に悪化してしまいます. - -そこで,grn_dat では,葉にキーの格納位置を持たせ,キーのプールに ID を格納するようにしています.これにより,キーの差し替えによって別のキーにアクセスしてしまう問題は解決されます.また,ID からキーの格納位置に変換する必要がなくなるため,参照の時間効率は少しだけ向上します. - -h3. ラベルによる連結 - -トライの代表的な機能の一つが Predictive search です.しかし,長子と次の兄弟へのポインタを各ノードが持つようなトライと比べると,ダブル配列は Predictive search を苦手とします.理由は,ラベルの種類数を m とするとき,子ノードの列挙にかかる時間計算量が O(m) になるからです.長子と次の兄弟へのポインタを各ノードが持っていれば,時間計算量は子ノードの数によって抑えられます.トライの根から Predictive search を実行するとき,葉では子ノードを列挙しなくてもよいという例外を無視して考えると,すべてのノードにおいて子ノードを列挙することになるため,ダブル配列の時間計算量は m 倍ということになります. - -そこで,grn_dat では,長子と次の兄弟へのポインタに代わる存在として,長子と次の兄弟のラベルを各ノードに持たせるようにしています.たとえば,ノード S について,長子のラベルを FIRST_CHILD[S],次の兄弟のラベルを NEXT_SIBLING[S] とすると,長子ノード X と次の兄弟ノード Y は以下のように求められます. - -<pre> -X = BASE[S] ⊕ FIRST_CHILD[S]; // ⊕ は排他的論理和(XOR)の意味で用いています. -Y = S ⊕ LABEL[S] ⊕ NEXT_SIBLING[S]; -</pre> - -ポインタやノード番号を持たせるよりはラベルの方がコンパクトで済み,効率的な Predictive search を実現できるようになります.また,CHECK をラベルに変更したことで余った領域の使い道としての意味もあります. - -h3. 領域の拡張 - -ノードの再利用を禁止している grn_dat では,徐々に拡張していくという方式を採用すると,古い情報が蓄積して空間効率がとても悪くなってしまいます.そこで,領域が不足すると一気に拡張するという方式を採用しました.具体的には,新しく大きな領域を確保して,必要な情報のみを移行するようにしています.また,プールに格納されているキーを辞書順に整列することで,Common prefix search や Predictive search の効率化を図っています. - -h3. おわりに - -すぐに終わると思って書き始めたドキュメントなのですが,途中で力尽きるくらい長いものになってしまいました.しかも,ダブル配列の実装をしたことのない人にとっては意味不明な内容になっています.「はじめに」を書いていたときは,そんなつもりはなかったのですが….そもそも,本格的なテストの前に API の仕様をきっちりドキュメントにしておこうという動機だったはずなのに,何がどうなって実装方法のドキュメントになったのでしょうか.謎です. Renamed: ja/_posts/2011-11-15-groonga-night-2-to-substitute.md (+5 -2) 63% =================================================================== --- ja/_posts/2011-11-15-groonga-night-2-to-substitute.textile 2016-02-07 10:35:40 +0900 (ebfcdc1) +++ ja/_posts/2011-11-15-groonga-night-2-to-substitute.md 2016-02-07 10:50:24 +0900 (d99f0ab) @@ -4,8 +4,11 @@ title: 「全文検索エンジンgroongaを囲む夕べ 2」参加者へのお --- h2. 「全文検索エンジンgroongaを囲む夕べ 2」参加者へのお知らせ -いよいよ2週間後に迫った "全文検索エンジンgroongaを囲む夕べ 2":http://atnd.org/events/20446 ですが、定員を超えた参加登録があります。 +いよいよ2週間後に迫った [全文検索エンジンgroongaを囲む夕べ +2](http://atnd.org/events/20446) +ですが、定員を超えた参加登録があります。 現在、定員100人に対して参加希望者が150人で50人が補欠になっていますが、補欠の方も含めて全員会場に来ても大丈夫です!ただし、補欠の方はイスがない可能性があるので、その場合は体育座りでの参加となってしまう可能性があります。それでもよい場合は補欠者の方もぜひ参加してください!まわりに補欠者の方がいる方はこのことを教えてあげてください。 -会場を提供してくれる "株式会社VOYAGE GROUP":http://voyagegroup.com/ さんの柔軟な対応のおかげで補欠者の方も参加できるようになりました。ありがとうございます! +会場を提供してくれる [株式会社VOYAGE GROUP](http://voyagegroup.com/) +さんの柔軟な対応のおかげで補欠者の方も参加できるようになりました。ありがとうございます! Renamed: ja/_posts/2011-11-29-release.md (+21 -14) 64% =================================================================== --- ja/_posts/2011-11-29-release.textile 2016-02-07 10:35:40 +0900 (cb4b18d) +++ ja/_posts/2011-11-29-release.md 2016-02-07 10:50:24 +0900 (18448cb) @@ -6,46 +6,53 @@ h2. groonga 1.2.8リリース 今日は年に一度のいい肉の日ですね。 -"groonga 1.2.8":/ja/docs/news.html#release-1-2-8 がリリースされました! +[groonga 1.2.8](/ja/docs/news.html#release-1-2-8) がリリースされました! -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) -今回から32bit環境用のパッケージも提供するようにしました。(Debian GNU/Linux用もUbuntu用もCentOS用もFedora用もWindows用も) +今回から32bit環境用のパッケージも提供するようにしました。(Debian +GNU/Linux用もUbuntu用もCentOS用もFedora用もWindows用も) ただし、32bit環境ではわりと早い段階でメモリ不足エラーになることに注意してください。あくまでテスト用・開発用にのみの使用をオススメします。ある程度の量のデータを扱う場合や、サーバー用途の場合は64bit環境で利用してください。64bit環境だとgroongaの力をフルに活かすことができます! -h3. データベースのフォーマット変更について +### データベースのフォーマット変更について 今回のリリースからテーブル・カラムのリネーム機能が追加されました!(ただし、groongaのコマンドとしてはまだ提供していないため、APIで利用している場合のみ利用可能です。次回リリースのときにはリネーム用のコマンドを追加する予定です。) このため、groongaのテーブル・カラムの名前管理に使っているデータ構造をパトリシアトライからダブル配列に変更しました。 -参考: "grn_dat – 参照ロックフリーなダブル配列":/ja/blog/2011/11/08/grn_dat.html +参考: [grn_dat – +参照ロックフリーなダブル配列](/ja/blog/2011/11/08/grn_dat.html) -これに伴い、groonga 1.2.8以降で作成したデータベースはgroonga1.2.7以前では開けなくなります!注意してください! +これに伴い、groonga +1.2.8以降で作成したデータベースはgroonga1.2.7以前では開けなくなります!注意してください! -なお、groonga 1.2.7以前で作成したデータベースはgroonga 1.2.8でもそのまま使えますので、今回のバージョンアップのためにデータベースを再構築する必要はありません。ただし、再構築しない場合はリネーム機能は利用できません。リネーム機能を利用したい場合は再構築する必要があります。 +なお、groonga 1.2.7以前で作成したデータベースはgroonga +1.2.8でもそのまま使えますので、今回のバージョンアップのためにデータベースを再構築する必要はありません。ただし、再構築しない場合はリネーム機能は利用できません。リネーム機能を利用したい場合は再構築する必要があります。 -h3. truncate対応 +### truncate対応 テーブル内のレコードを一気に削除するtruncate機能が実装されました。groongaの多くの操作は参照ロックフリーで実現されているため、更新操作を行なっていてもデータへアクセスすることができますが、truncateは参照ロックフリーではないため、truncate中にアクセスすることができません。注意して使ってください。 -h3. パッケージについて +### パッケージについて 梅基さんがgroongaのMacPortsを本家のリポジトリに取り込んでくれました!ありがとうございます! 今後GitHubにおいてあるgroongaのMacPortsは更新しないので、本家のものを利用してください。 -h3. 位置情報検索について +### 位置情報検索について 今回のリリースでは長方形での位置情報検索処理が高速になりました。場合によっては2倍程度速くなります。 -h3. 全文検索エンジンgroongaを囲む夕べ 2のお知らせ +### 全文検索エンジンgroongaを囲む夕べ 2のお知らせ -いよいよ今日が "全文検索エンジンgroongaを囲む夕べ 2":http://atnd.org/events/20446 の開催日です。 +いよいよ今日が [全文検索エンジンgroongaを囲む夕べ +2](http://atnd.org/events/20446) の開催日です。 最近、キャンセルして!キャンセルして!と伝えていましたが、都合のよい方はどんどん参加してもらって大丈夫です!定員を超えていますが、今からでも参加可能です!(ただし、イスが足りなくて体育座りになるかもしれません。) -h3. 変更点 +### 変更点 -1.2.7からの変更点: "1.2.8リリース - 2011/11/29":/ja/docs/news.html#release-1-2-8 +1.2.7からの変更点: [1.2.8リリース - +2011/11/29](/ja/docs/news.html#release-1-2-8) Added: ja/_posts/2011-12-02-groonga-night-2.md (+27 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2011-12-02-groonga-night-2.md 2016-02-07 10:50:24 +0900 (f35a7e1) @@ -0,0 +1,27 @@ +--- +layout: post.ja +title: 全文検索エンジンgroongaを囲む夕べ 2開催 +--- +h2. 全文検索エンジンgroongaを囲む夕べ 2開催 + +昨年に引き続き、今年もいい肉の日に +[全文検索エンジンgroongaを囲む夕べ](http://atnd.org/events/20446) +を開催しました。 + +資料は [発表ページ](/ja/publication/#groonga-night-2) +にまとめてありますので、残念ながら当日参加できなかった方はこちらをご覧ください。また、 +[Ustreamでの録画](http://www.ustream.tv/recorded/18817014) +もありますので、こちらも合わせてご覧ください。 + +前回から1年ぶりの開催という事もあり、今回は実装の詳細というよりは機能紹介・最新情報紹介の面が強かったですが、実装の詳細にガンガン踏み込んだ勉強会も面白そうですね。夕べシリーズとは別にそういう機会もあるといいですね。(groongaの実装の詳細に興味のある方、開催してみませんか?) + +さて、夕べの中でも話しましたが、groonga開発チームはgroonga開発者を募集しています!groongaに興味のある方はぜひ開発に参加してください! + +また、groongaの採用事例も募集しています。 [利用例ページ](/ja/users/) +に掲載しますので、groongaを利用している方は、ぜひ groon****@groon***** +まで利用例をお送りください。groonga開発チームの励みにもなりますし、導入しようか悩んでいる人の安心材料にもなります。groongaを使っている方はご連絡をお待ちしています。 + +会場を提供してくれた [VOYAGE GROUP](http://voyagegroup.com/) +さん、発表者のみなさん、参加者のみなさん、ありがとうございました! + +それでは、また、来年のいい肉の日にお会いしましょう。 Deleted: ja/_posts/2011-12-02-groonga-night-2.textile (+0 -19) 100644 =================================================================== --- ja/_posts/2011-12-02-groonga-night-2.textile 2016-02-07 10:35:40 +0900 (e340890) +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: post.ja -title: 全文検索エンジンgroongaを囲む夕べ 2開催 ---- -h2. 全文検索エンジンgroongaを囲む夕べ 2開催 - -昨年に引き続き、今年もいい肉の日に "全文検索エンジンgroongaを囲む夕べ":http://atnd.org/events/20446 を開催しました。 - -資料は "発表ページ":/ja/publication/#groonga-night-2 にまとめてありますので、残念ながら当日参加できなかった方はこちらをご覧ください。また、 "Ustreamでの録画":http://www.ustream.tv/recorded/18817014 もありますので、こちらも合わせてご覧ください。 - -前回から1年ぶりの開催という事もあり、今回は実装の詳細というよりは機能紹介・最新情報紹介の面が強かったですが、実装の詳細にガンガン踏み込んだ勉強会も面白そうですね。夕べシリーズとは別にそういう機会もあるといいですね。(groongaの実装の詳細に興味のある方、開催してみませんか?) - -さて、夕べの中でも話しましたが、groonga開発チームはgroonga開発者を募集しています!groongaに興味のある方はぜひ開発に参加してください! - -また、groongaの採用事例も募集しています。 "利用例ページ":/ja/users/ に掲載しますので、groongaを利用している方は、ぜひ groon****@groon***** まで利用例をお送りください。groonga開発チームの励みにもなりますし、導入しようか悩んでいる人の安心材料にもなります。groongaを使っている方はご連絡をお待ちしています。 - -会場を提供してくれた "VOYAGE GROUP":http://voyagegroup.com/ さん、発表者のみなさん、参加者のみなさん、ありがとうございました! - -それでは、また、来年のいい肉の日にお会いしましょう。 Renamed: ja/_posts/2011-12-29-release.md (+18 -20) 69% =================================================================== --- ja/_posts/2011-12-29-release.textile 2016-02-07 10:35:40 +0900 (d3617de) +++ ja/_posts/2011-12-29-release.md 2016-02-07 10:50:24 +0900 (7dc0bab) @@ -6,50 +6,48 @@ h2. groonga 1.2.9リリース 今日は今年最後の肉の日ですね。 -"groonga 1.2.9":/ja/docs/news.html#release-1-2-9 がリリースされました! +[groonga 1.2.9](/ja/docs/news.html#release-1-2-9) がリリースされました! -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) -今回、 "groongaの特長をまとめたページ":/ja/docs/characteristic.html をより実情にあわせたものに更新しました。もうgroongaを使っている方でも知らないことがあると思うので、ぜひ確認してみてください! +今回、 [groongaの特長をまとめたページ](/ja/docs/characteristic.html) +をより実情にあわせたものに更新しました。もうgroongaを使っている方でも知らないことがあると思うので、ぜひ確認してみてください! -h3. MessagePack対応開始 +### MessagePack対応開始 groongaはこれまでJSON/XML/TSVで検索結果を返すことができましたが、今回からMessagePackでも返すことができるようになりました。(ただし、主要なコマンドだけ。まだMessagePackで返せないコマンドもある。) JSONではデータ量が多い・パースに時間がかかるという場合はMessagePack出力を試してみてください。HTTPで使っている場合は以下のように「.msgpack」という拡張子をつけるとMessagePack形式で返ってきます。 -<pre> -http://localhost:10041/d/select.msgpack?... -</pre> + http://localhost:10041/d/select.msgpack?... -コマンドラインやgqtpで使っている場合は以下のように「--output_type msgpack」を指定してください。 +コマンドラインやgqtpで使っている場合は以下のように「--output_type +msgpack」を指定してください。 -<pre> -select --output_type msgpack ... -</pre> + select --output_type msgpack ... -h3. 管理画面にスループットグラフを追加 +### 管理画面にスループットグラフを追加 HTTPサーバーとしてgroongaを起動すると「http://localhost:10041/」で管理画面がでてきますが、このページに、そのgroongaサーバーのスループットをリアルタイムで描画するグラフを追加しました。動画の方がよさそうな気がしますが、スクリーンショットです。こんな感じになります。 -!/images/groonga-admin/throughput-graph.png(管理画面のスループットグラフ)! +![管理画面のスループットグラフ](/images/groonga-admin/throughput-graph.png "管理画面のスループットグラフ") HTTPで利用していて「今この瞬間のスループット」を知りたいときは便利じゃないかと思います。ただ、データは蓄積していないので「ここ1週間のスループット」などは見れません。そういうものに関しては、別のサービス管理ツールや統計情報を視覚化するツールを利用してください。 なお、今回のリリースからMunin用のスループット生成プラグイン(groonga_throughput)も付属しています。これを使うとHTTPサーバーとして使っている場合でもgqtpサーバーとして使っている場合でもグラフを作成できます。 -h3. レコードの一括削除に対応 +### レコードの一括削除に対応 これまでのdeleteコマンドはIDまたはキー指定で1つずつレコードを削除することしかできませんでしたが、今回から条件にマッチしたレコードをまとめて削除できるようになりました。selectコマンドの--filterオプションがそのまま使えるので、これで条件を指定して削除してください。以下はusersテーブルの中からdeletedカラムの値がtrueのレコードを全て削除する例です。 -<pre> -delete users --filter 'deleted == true' -</pre> + delete users --filter 'deleted == true' -h3. 変更点 +### 変更点 -1.2.8からの変更点: "1.2.9リリース - 2011/12/29":/ja/docs/news.html#release-1-2-9 +1.2.8からの変更点: [1.2.9リリース - +2011/12/29](/ja/docs/news.html#release-1-2-9) -h3. さいごに +### さいごに それでは、よいお年をお迎えください! Added: ja/_posts/2012-01-16-motionology-2012-1.md (+65 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-01-16-motionology-2012-1.md 2016-02-07 10:50:24 +0900 (3f68318) @@ -0,0 +1,65 @@ +--- +layout: post.ja +title: "モーショノロジー2012 #1参加のおしらせ" +--- +h2. モーショノロジー2012 #1参加のおしらせ + +[CROOZさん](http://crooz.co.jp/) が主催する [モーショノロジー2012 +#1](http://atnd.org/events/23608) +という技術勉強会でgroonga関連のお話をすることになりました。 + +[技術、デザイン、そのほか固執したテーマにとらわれない形式での勉強会、「モーショノロジー2012」を定期的に開催していく](http://crooz.co.jp/archives/4645) +という「モーショノロジー2012」の第一回目のテーマが「検索」ということでgroonga開発チームにお声がけいただきました。ありがとうございます。この勉強会ではgroonga以外にもSolrや事例紹介など検索に関する様々な話題があります。検索(特に全文検索)に興味のある方はぜひ参加してみてください。 + +groonga関連では以下の3つの話題があります。 + +1. groongaの索引を静的に構築する話 +2. rroongaで検索サービスを実装する話 +3. ぐるなびさんで利用している位置情報検索機能の話 + +### 索引の静的構築 + +先日開催された [全文検索エンジンgroongaを囲む夕べ +2](/ja/publication/#groonga-night-2) での +[新年と収穫の祭り](/ja/publication/presentation/groonga-night-2-newyear-harvest.pdf) +(PDF)でも触れましたが、静的な索引構築対応作業を進めています。 + +索引の構築方法には静的な構築方法と動的な構築方法があります。(参考: +[検索エンジンはいかにして動くのか?:第7回 転置索引の構築](http://gihyo.jp/dev/serial/01/search-engine/0007) +と +[検索エンジンはいかにして動くのか?:第10回 動的な索引構築](http://gihyo.jp/dev/serial/01/search-engine/0010) +。)groongaでは鮮度のよい情報に価値があると考え、鮮度のよい情報をすぐに検索可能にすることを重視しています。そのため、これまでは高速で参照をブロックしない動的構築方法に特に力を入れてきました。 + +静的構築はすぐに検索可能にならないという欠点がありますが、索引の構築に必要なリソースなどでは動的構築よりも有利です。また、 +[mroonga](http://mroonga.org/) や +[Sedue](http://preferred.jp/sedue.html) +など静的に索引を構築するシステムでgroongaが利用される機会が増えてきました。そのため、動的構築方法だけではなく静的構築方法もサポートし、オンラインでデータベースを変更する場合は動的構築、バッチ処理でデータベースを変更する場合は静的構築と用途に応じて使い分けるようにします。 + +このような現在絶賛開発中の索引の静的構築方法について説明します。 + +### rroongaで実装した検索サービス + +Rubyからgroongaを全文検索ライブラリとして使うためのRuby用のライブラリが +[rroonga](http://ranguba.org/ja/#about-rroonga) +です。rroongaを使うと高速な全文検索機能をもった検索サービスをRubyで実装できます。 + +groongaを検索エンジンとして使った検索システムではいくつかの構成が考えられ、rroongaを使った構成もそのうちの1つです。 + +- groongaサーバーを立ち上げてWebアプリケーションはgroongaサーバーとHTTPで通信する構成 +- MySQLと [mroonga](http://mroonga.org/) + を組み合わせてWebアプリケーションはMySQLとSQLで通信する構成 +- rroongaを利用し、Webアプリケーションプロセス自体に検索機能をもたせる構成 +- など + +このうち、rroongaを利用する構成のメリット・デメリット、負荷分散するための方法、実例などを説明します。 + +### 位置情報検索機能 + +ぐるなびさんでの位置情報検索機能の話は +[全文検索エンジンgroongaを囲む夕べ 2](/ja/publication/#groonga-night-2) +のときと同じ内容です。groongaを囲む夕べでは一番質問の多かった話だったので、groongaを囲む夕べでは都合がつかなかったために聞き逃したという方はぜひ参加してみてください。 + +### まとめ + +[モーショノロジー2012 #1](http://atnd.org/events/23608) +でのgroonga関連の話題の内容を紹介しました。興味のある方はぜひ参加してください。 Deleted: ja/_posts/2012-01-16-motionology-2012-1.textile (+0 -46) 100644 =================================================================== --- ja/_posts/2012-01-16-motionology-2012-1.textile 2016-02-07 10:35:40 +0900 (65800d1) +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: post.ja -title: "モーショノロジー2012 #1参加のおしらせ" ---- -h2. モーショノロジー2012 #1参加のおしらせ - -"CROOZさん":http://crooz.co.jp/ が主催する "モーショノロジー2012 #1":http://atnd.org/events/23608 という技術勉強会でgroonga関連のお話をすることになりました。 - -"技術、デザイン、そのほか固執したテーマにとらわれない形式での勉強会、「モーショノロジー2012」を定期的に開催していく":http://crooz.co.jp/archives/4645 という「モーショノロジー2012」の第一回目のテーマが「検索」ということでgroonga開発チームにお声がけいただきました。ありがとうございます。この勉強会ではgroonga以外にもSolrや事例紹介など検索に関する様々な話題があります。検索(特に全文検索)に興味のある方はぜひ参加してみてください。 - -groonga関連では以下の3つの話題があります。 - -# groongaの索引を静的に構築する話 -# rroongaで検索サービスを実装する話 -# ぐるなびさんで利用している位置情報検索機能の話 - -h3. 索引の静的構築 - -先日開催された "全文検索エンジンgroongaを囲む夕べ 2":/ja/publication/#groonga-night-2 での "新年と収穫の祭り":/ja/publication/presentation/groonga-night-2-newyear-harvest.pdf (PDF)でも触れましたが、静的な索引構築対応作業を進めています。 - -索引の構築方法には静的な構築方法と動的な構築方法があります。(参考: "検索エンジンはいかにして動くのか?:第7回 転置索引の構築":http://gihyo.jp/dev/serial/01/search-engine/0007 と "検索エンジンはいかにして動くのか?:第10回 動的な索引構築":http://gihyo.jp/dev/serial/01/search-engine/0010 。)groongaでは鮮度のよい情報に価値があると考え、鮮度のよい情報をすぐに検索可能にすることを重視しています。そのため、これまでは高速で参照をブロックしない動的構築方法に特に力を入れてきました。 - -静的構築はすぐに検索可能にならないという欠点がありますが、索引の構築に必要なリソースなどでは動的構築よりも有利です。また、 "mroonga":http://mroonga.org/ や "Sedue":http://preferred.jp/sedue.html など静的に索引を構築するシステムでgroongaが利用される機会が増えてきました。そのため、動的構築方法だけではなく静的構築方法もサポートし、オンラインでデータベースを変更する場合は動的構築、バッチ処理でデータベースを変更する場合は静的構築と用途に応じて使い分けるようにします。 - -このような現在絶賛開発中の索引の静的構築方法について説明します。 - -h3. rroongaで実装した検索サービス - -Rubyからgroongaを全文検索ライブラリとして使うためのRuby用のライブラリが "rroonga":http://ranguba.org/ja/#about-rroonga です。rroongaを使うと高速な全文検索機能をもった検索サービスをRubyで実装できます。 - -groongaを検索エンジンとして使った検索システムではいくつかの構成が考えられ、rroongaを使った構成もそのうちの1つです。 - -* groongaサーバーを立ち上げてWebアプリケーションはgroongaサーバーとHTTPで通信する構成 -* MySQLと "mroonga":http://mroonga.org/ を組み合わせてWebアプリケーションはMySQLとSQLで通信する構成 -* rroongaを利用し、Webアプリケーションプロセス自体に検索機能をもたせる構成 -* など - -このうち、rroongaを利用する構成のメリット・デメリット、負荷分散するための方法、実例などを説明します。 - -h3. 位置情報検索機能 - -ぐるなびさんでの位置情報検索機能の話は "全文検索エンジンgroongaを囲む夕べ 2":/ja/publication/#groonga-night-2 のときと同じ内容です。groongaを囲む夕べでは一番質問の多かった話だったので、groongaを囲む夕べでは都合がつかなかったために聞き逃したという方はぜひ参加してみてください。 - -h3. まとめ - -"モーショノロジー2012 #1":http://atnd.org/events/23608 でのgroonga関連の話題の内容を紹介しました。興味のある方はぜひ参加してください。 Added: ja/_posts/2012-01-27-motionology-2012-1.md (+23 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-01-27-motionology-2012-1.md 2016-02-07 10:50:24 +0900 (e35514c) @@ -0,0 +1,23 @@ +--- +layout: post.ja +title: "モーショノロジー2012 #1に参加 #mnlgy" +--- +h2. モーショノロジー2012 #1に参加 #mnlgy + +[CROOZさん](http://crooz.co.jp/) が主催する [モーショノロジー2012 +#1](http://atnd.org/events/23608) +という技術勉強会でgroonga関連のお話をしてきました。 + +資料は [発表ページ](/ja/publication/#motionology-2012-1) +にまとめてありますので、残念ながら当日参加できなかった方はこちらをご覧ください。 + +資料などの関連情報を +[Facebookのモーショノロジー](http://www.facebook.com/motionology) +に集めるそうなので、groonga以外の話題も気になる方はこちらもご覧ください。 + +兼山さんの +[Solrを使ったレシピ検索のプロトタイピング](http://d.hatena.ne.jp/code46/20120127/p1) +の資料はすでに公開されているようです。 + +CROOZさん、今回は声をかけていただきありがとうございます! +groonga関連のお話を聞きたい!という方がいたらぜひ声をかけてください!話に行きます。 Deleted: ja/_posts/2012-01-27-motionology-2012-1.textile (+0 -16) 100644 =================================================================== --- ja/_posts/2012-01-27-motionology-2012-1.textile 2016-02-07 10:35:40 +0900 (c7997e3) +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: post.ja -title: "モーショノロジー2012 #1に参加 #mnlgy" ---- -h2. モーショノロジー2012 #1に参加 #mnlgy - -"CROOZさん":http://crooz.co.jp/ が主催する "モーショノロジー2012 #1":http://atnd.org/events/23608 という技術勉強会でgroonga関連のお話をしてきました。 - -資料は "発表ページ":/ja/publication/#motionology-2012-1 にまとめてありますので、残念ながら当日参加できなかった方はこちらをご覧ください。 - -資料などの関連情報を "Facebookのモーショノロジー":http://www.facebook.com/motionology に集めるそうなので、groonga以外の話題も気になる方はこちらもご覧ください。 - -兼山さんの "Solrを使ったレシピ検索のプロトタイピング":http://d.hatena.ne.jp/code46/20120127/p1 の資料はすでに公開されているようです。 - -CROOZさん、今回は声をかけていただきありがとうございます! -groonga関連のお話を聞きたい!という方がいたらぜひ声をかけてください!話に行きます。 Added: ja/_posts/2012-01-29-release.md (+61 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-01-29-release.md 2016-02-07 10:50:24 +0900 (f6c24d9) @@ -0,0 +1,61 @@ +--- +layout: post.ja +title: groonga 1.3.0リリース +--- +h2. groonga 1.3.0リリース + +今日は今年最初の肉の日ですね。 + +[groonga 1.3.0](/ja/docs/news.html#release-1-3-0) がリリースされました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +### モーショノロジー2012 #1で発表してきました + +[モーショノロジー2012 #1 +全文検索&検索を利用したサービスの使命、利用プロダクト、事例紹介](http://atnd.org/events/23608) +でgroonga関連のお話をしてきました。発表資料は +[発表ページ](/ja/publication/#motionology-2012-1) +にあるので確認してみてください。 + +### renameコマンドを追加 + +テーブル名・カラム名をリネームするtable_renameコマンドとcolumn_renameコマンドを追加しました。(まだドキュメントは用意できていないのですが、)以下のように使うことができます。 + +table_rename: + + > table_rename ${table_name} ${new_table_name} + +UsersテーブルをPeopleテーブルにリネームする例: + + > table_rename Users People + +column_rename: + + > column_rename ${table_name} ${column_name} ${new_column_name} + +Usersテーブルのnameカラムをnickカラムにリネームする例: + + > column_rename Users name nick + +これまではリネームしようと思ったら、わりと大変だったのですが、これで簡単にスキーマを試せますね。 + +### MessagePack出力とサジェスト機能を「サポート対象」に変更 + +1.3.0になったこともあるので、MessagePack出力と +[サジェスト機能](/ja/docs/suggest.html) +を「実験的」な扱いから「サポート対象」の扱いにしました。 + +サジェスト機能は内部的なスキーマをこれから変更する可能性はあるのですが、上記のrenameコマンドで外部からは意識しないで改良していける見通しが経ったので「サポート対象」扱いとしました。 + +MessagePack出力もサジェスト機能もぜひ使ってみてください。 + +### 変更点 + +1.2.9からの変更点: [1.3.0リリース - +2012/01/29](/ja/docs/news.html#release-1-3-0) + +### さいごに + +それでは、今年もよろしくおねがいします! Deleted: ja/_posts/2012-01-29-release.textile (+0 -61) 100644 =================================================================== --- ja/_posts/2012-01-29-release.textile 2016-02-07 10:35:40 +0900 (68b1442) +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: post.ja -title: groonga 1.3.0リリース ---- -h2. groonga 1.3.0リリース - -今日は今年最初の肉の日ですね。 - -"groonga 1.3.0":/ja/docs/news.html#release-1-3-0 がリリースされました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -h3. モーショノロジー2012 #1で発表してきました - -"モーショノロジー2012 #1 全文検索&検索を利用したサービスの使命、利用プロダクト、事例紹介":http://atnd.org/events/23608 でgroonga関連のお話をしてきました。発表資料は "発表ページ":/ja/publication/#motionology-2012-1 にあるので確認してみてください。 - -h3. renameコマンドを追加 - -テーブル名・カラム名をリネームするtable_renameコマンドとcolumn_renameコマンドを追加しました。(まだドキュメントは用意できていないのですが、)以下のように使うことができます。 - -table_rename: - -<pre> -> table_rename ${table_name} ${new_table_name} -</pre> - -UsersテーブルをPeopleテーブルにリネームする例: - -<pre> -> table_rename Users People -</pre> - -column_rename: - -<pre> -> column_rename ${table_name} ${column_name} ${new_column_name} -</pre> - -Usersテーブルのnameカラムをnickカラムにリネームする例: - -<pre> -> column_rename Users name nick -</pre> - -これまではリネームしようと思ったら、わりと大変だったのですが、これで簡単にスキーマを試せますね。 - -h3. MessagePack出力とサジェスト機能を「サポート対象」に変更 - -1.3.0になったこともあるので、MessagePack出力と "サジェスト機能":/ja/docs/suggest.html を「実験的」な扱いから「サポート対象」の扱いにしました。 - -サジェスト機能は内部的なスキーマをこれから変更する可能性はあるのですが、上記のrenameコマンドで外部からは意識しないで改良していける見通しが経ったので「サポート対象」扱いとしました。 - -MessagePack出力もサジェスト機能もぜひ使ってみてください。 - -h3. 変更点 - -1.2.9からの変更点: "1.3.0リリース - 2012/01/29":/ja/docs/news.html#release-1-3-0 - -h3. さいごに - -それでは、今年もよろしくおねがいします! Added: ja/_posts/2012-02-17-madoka.md (+129 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-02-17-madoka.md 2016-02-07 10:50:24 +0900 (8f25984) @@ -0,0 +1,129 @@ +--- +layout: post.ja +title: Count-Min Sketch のライブラリを公開しました +--- + +Count-Min Sketch のライブラリを公開しました +------------------------------------------- + +written by Susumu Yata. + +### はじめに + +先日 groonga プロジェクトでの利用を目的として開発しているライブラリ +Madoka を公開しました.Madoka は [Count-Min +Sketch](https://sites.google.com/site/countminsketch/) +という手法をライブラリ化したものであり,文書集合に含まれるキーワードの頻度を求める,クエリの頻度を求める,などの用途に使うことができます. + +- [s-yata/madoka - GitHub](https://github.com/s-yata/madoka) +- [Documentation - Madoka](http://s-yata.github.com/madoka/) + +ライブラリの使い方についてはドキュメントに書いてあるので,こちらは +Count-Min Sketch と Madoka の特徴をまとめた内容になっています. + +### Count-Min Sketch + +頻度を求めることが目的であれば,ハッシュ表による連想配列を使うのが,おそらく一般的です.キーワードやクエリ(以降,キー)を指定すれば頻度への参照を返すという連想配列であれば,主要なプログラミング言語では標準的にサポートされていると思います.それでは,Count-Min +Sketch のライブラリを開発する理由はどこにあったのでしょうか.Count-Min +Sketch の特徴を以下に並べてみます. + +- キーを取り出すことはできません. + - キーを渡せば頻度を返すというインタフェースは用意できますが,それまでにカウントしたキーを列挙するようなことはできません. + - 高頻度のキーだけを列挙したいなどの要求については,個別に対処する必要があります. +- 誤差を含みます. + - 正確な頻度が 10,000 であるキーに対して 10,010 + などの誤差を含む値を返すことがあり,厳密な頻度を求めたい状況では,直接的に使うことはできません. + - 低頻度なキーは誤差を含みやすいという特徴があります. +- 最初にサイズを決定します. + - 作成するときに指定するパラメータによってスケッチのサイズが決定されます. + - どれほどのキーを入力してもサイズは変化しませんが,代わりに誤差が大きくなっていきます. +- 最悪時間計算量が O (1) になります. + - ハッシュ表の平均時間計算量を O (1) とするのであれば,Count-Min + Sketch の最悪時間計算量は O (1) です. + - 正確にはスケッチのパラメータとキーの長さに依存します.そして,実際にはキャッシュミスがボトルネックになります. + +まず重要なことは,スケッチのサイズが固定されるということです.メモリ使用量は簡単に求めることが可能であり,拡張によってメモリが不足する可能性はありません.誤差を許容できるのであれば,という条件が付くものの,魅力的な特徴です.その上,低頻度キーの誤差を無視できるのであれば,一般的なハッシュ表と比べて +1/10 +程度のメモリ使用量でも十分な精度を確保できます.そのため,上手くハマると極めて強力なツールになります. + +一方で,あらかじめスケッチのサイズを決定しなければならないことは,大きな欠点でもあります.スケッチのサイズを小さくすれば誤差が大きくなり,逆に,スケッチのサイズを大きくすればメモリ使用量が増えてしまいます.キャッシュミスが増えて遅くなるというおまけ付きです.そして,パラメータの設定に際して考慮すべきことはメモリ使用量,許容誤差,キーの規模・分布だと分かっているものの,具体的な設定指針はまだ見えていません.これからの評価で明らかにしていきたいところですが,できれば,興味のある方には実際に使ってみていただけると助かります. + +### Madoka - Count-Min Sketch のライブラリ + +Madoka は Count-Min Sketch のライブラリですが,精度を高めるために +[Conservative +Update](http://sparrow.ece.cmu.edu/group/731-s10/readings/estan_varghese.pdf) +を採用しています.実は [Lossy Conservative +Update](http://www.umiacs.umd.edu/%7Eamit/Papers/goyalLCUSketchAAAI11.pdf) +にも対応していますが,こちらはおまけなので,ライブラリの利用者が Lossy +Conservative Update のことを知らなければ適用できません.それから, +[ux-trie](http://code.google.com/p/ux-trie/) +を参考に開発したライブラリが +[marisa-trie](http://code.google.com/p/marisa-trie/) +になったように,既存の手法や実装の段階で思い付いたアイデアを取り込んでいます. + +- [MurmurHash3](http://code.google.com/p/smhasher/wiki/MurmurHash3) + - ハッシュ関数には MurmurHash3 を使っています. + - 任意のバイト列から 128 + ビットのハッシュ値を一度に生成できるので便利です. +- [Xorshift](http://ja.wikipedia.org/wiki/Xorshift) + - 疑似乱数の生成には 128 ビット版 Xorshift を使っています. + - シンプルで高速なので重宝します. +- ビット単位のカウンタ + - 32 ビットの整数をカウンタに使うのは勿体ないため,上限に応じて 1, + 2, 4, 8, 16 + ビットの整数をカウンタとして使えるようになっています. + - 1 ビットのときは [Bloom + Filter](http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%AB%E3%83%BC%E3%83%A0%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF) + のそっくりさんになります. + - たとえば,頻度 10 以上になるキーを判定したいときは 4 + ビットのカウンタで十分です. +- 確率的なカウンタ + - 32 ビットの整数では飽和しかねず,64 + ビットの整数では大きすぎる,という理由から開発されたカウンタです. + - [浮動小数点数](http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0) + と [Approximate Counting + Algorithm](http://en.wikipedia.org/wiki/Approximate_counting_algorithm) + のアイデアを組み合わせることで生まれたカウンタです. + - 14 ビットの仮数部と 5 + ビットの指数部により構成されるカウンタであり,約 35 兆(2^45 - + 1)までの数値を表現できます. + - 仮数部が 0, 1 + 以外のときは確率的に値が変化するという考え方を採用することで,インクリメントや加算を実現しました. + - カウントを繰り返すことによって誤差が発生するものの,ほとんどのカウンタでは + 1% 以内に収まります. +- もっと Conservative Update + - 別のキーによるインクリメントをブロックするフラグの導入により誤差を抑えています. + - 確率的なカウンタを使うときだけ有効になります. + - カウンタのサイズは 21 ビットになりますが,カウンタ 3 + つをまとめて 64 ビットに格納するため,1 ビットは無駄になります. +- フィルタの適用 + - すべてのカウンタに対して同じ関数を適用します. + - Lossy Conservative Update に使えます. + - カウンタが飽和してしまったときは,フィルタを使って全カウンタを引き下げた上で使いつづけるという手があります. +- スケッチの縮小 + - 元のサイズを割り切れるサイズへとスケッチを縮小することができます. + - 同時にカウンタの上限を変更したりフィルタを適用したりできます. + - たとえば,カウンタの上限を 1 にして { return value >= 10; } + というフィルタを適用すれば,閾値を 10 とする 2 + 値のスケッチへと変換できます. + - 当初の想定では,誤差が許容できる程度に縮小するだけの機能でした. +- スケッチの合成 + - 二つのスケッチを合成できるようになっています. + - 別々に作成したスケッチを 1 つにまとめるという使い道があります. + +というわけで,なかなか味のあるライブラリに仕上がっています.実のところ,当初は +Count-Min Sketch +の実用性に懐疑的でした.それが今では,使いどころは難しいものの,かなり実用的なのではないかと考えるようになりました.今後の開発においては,Windows +で動くようにすることや日本語のドキュメントを用意することに加えて,Count-Min +Sketch の評価を進めることを予定しています. + +### おわりに + +Count-Min Sketch +は興味深い手法であり,いろいろなところに応用できるはずです.しかし,ハッシュ表ほど汎用的な手法ではなく,知名度が低くて実例が少ないため,まだまだ選択肢としては貧弱です.ライブラリの開発が +Count-Min Sketch +が普及する一助になれば,それはとっても嬉しいなって思います. + +2 月 25 日に開催される [第9回自然言語処理勉強会 +#TokyoNLP](http://atnd.org/events/25020) で発表する予定です. Deleted: ja/_posts/2012-02-17-madoka.textile (+0 -83) 100644 =================================================================== --- ja/_posts/2012-02-17-madoka.textile 2016-02-07 10:35:40 +0900 (61cdfa8) +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: post.ja -title: Count-Min Sketch のライブラリを公開しました ---- - -h2. Count-Min Sketch のライブラリを公開しました - -written by Susumu Yata. - -h3. はじめに - -先日 groonga プロジェクトでの利用を目的として開発しているライブラリ Madoka を公開しました.Madoka は "Count-Min Sketch":https://sites.google.com/site/countminsketch/ という手法をライブラリ化したものであり,文書集合に含まれるキーワードの頻度を求める,クエリの頻度を求める,などの用途に使うことができます. - -* "s-yata/madoka - GitHub":https://github.com/s-yata/madoka -* "Documentation - Madoka":http://s-yata.github.com/madoka/ - -ライブラリの使い方についてはドキュメントに書いてあるので,こちらは Count-Min Sketch と Madoka の特徴をまとめた内容になっています. - -h3. Count-Min Sketch - -頻度を求めることが目的であれば,ハッシュ表による連想配列を使うのが,おそらく一般的です.キーワードやクエリ(以降,キー)を指定すれば頻度への参照を返すという連想配列であれば,主要なプログラミング言語では標準的にサポートされていると思います.それでは,Count-Min Sketch のライブラリを開発する理由はどこにあったのでしょうか.Count-Min Sketch の特徴を以下に並べてみます. - -* キーを取り出すことはできません. -** キーを渡せば頻度を返すというインタフェースは用意できますが,それまでにカウントしたキーを列挙するようなことはできません. -** 高頻度のキーだけを列挙したいなどの要求については,個別に対処する必要があります. -* 誤差を含みます. -** 正確な頻度が 10,000 であるキーに対して 10,010 などの誤差を含む値を返すことがあり,厳密な頻度を求めたい状況では,直接的に使うことはできません. -** 低頻度なキーは誤差を含みやすいという特徴があります. -* 最初にサイズを決定します. -** 作成するときに指定するパラメータによってスケッチのサイズが決定されます. -** どれほどのキーを入力してもサイズは変化しませんが,代わりに誤差が大きくなっていきます. -* 最悪時間計算量が O(1) になります. -** ハッシュ表の平均時間計算量を O(1) とするのであれば,Count-Min Sketch の最悪時間計算量は O(1) です. -** 正確にはスケッチのパラメータとキーの長さに依存します.そして,実際にはキャッシュミスがボトルネックになります. - -まず重要なことは,スケッチのサイズが固定されるということです.メモリ使用量は簡単に求めることが可能であり,拡張によってメモリが不足する可能性はありません.誤差を許容できるのであれば,という条件が付くものの,魅力的な特徴です.その上,低頻度キーの誤差を無視できるのであれば,一般的なハッシュ表と比べて 1/10 程度のメモリ使用量でも十分な精度を確保できます.そのため,上手くハマると極めて強力なツールになります. - -一方で,あらかじめスケッチのサイズを決定しなければならないことは,大きな欠点でもあります.スケッチのサイズを小さくすれば誤差が大きくなり,逆に,スケッチのサイズを大きくすればメモリ使用量が増えてしまいます.キャッシュミスが増えて遅くなるというおまけ付きです.そして,パラメータの設定に際して考慮すべきことはメモリ使用量,許容誤差,キーの規模・分布だと分かっているものの,具体的な設定指針はまだ見えていません.これからの評価で明らかにしていきたいところですが,できれば,興味のある方には実際に使ってみていただけると助かります. - -h3. Madoka - Count-Min Sketch のライブラリ - -Madoka は Count-Min Sketch のライブラリですが,精度を高めるために "Conservative Update":http://sparrow.ece.cmu.edu/group/731-s10/readings/estan_varghese.pdf を採用しています.実は "Lossy Conservative Update":http://www.umiacs.umd.edu/%7Eamit/Papers/goyalLCUSketchAAAI11.pdf にも対応していますが,こちらはおまけなので,ライブラリの利用者が Lossy Conservative Update のことを知らなければ適用できません.それから, "ux-trie":http://code.google.com/p/ux-trie/ を参考に開発したライブラリが "marisa-trie":http://code.google.com/p/marisa-trie/ になったように,既存の手法や実装の段階で思い付いたアイデアを取り込んでいます. - -* "MurmurHash3":http://code.google.com/p/smhasher/wiki/MurmurHash3 -** ハッシュ関数には MurmurHash3 を使っています. -** 任意のバイト列から 128 ビットのハッシュ値を一度に生成できるので便利です. -* "Xorshift":http://ja.wikipedia.org/wiki/Xorshift -** 疑似乱数の生成には 128 ビット版 Xorshift を使っています. -** シンプルで高速なので重宝します. -* ビット単位のカウンタ -** 32 ビットの整数をカウンタに使うのは勿体ないため,上限に応じて 1, 2, 4, 8, 16 ビットの整数をカウンタとして使えるようになっています. -** 1 ビットのときは "Bloom Filter":http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%AB%E3%83%BC%E3%83%A0%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF のそっくりさんになります. -** たとえば,頻度 10 以上になるキーを判定したいときは 4 ビットのカウンタで十分です. -* 確率的なカウンタ -** 32 ビットの整数では飽和しかねず,64 ビットの整数では大きすぎる,という理由から開発されたカウンタです. -** "浮動小数点数":http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0 と "Approximate Counting Algorithm":http://en.wikipedia.org/wiki/Approximate_counting_algorithm のアイデアを組み合わせることで生まれたカウンタです. -** 14 ビットの仮数部と 5 ビットの指数部により構成されるカウンタであり,約 35 兆(2^45 - 1)までの数値を表現できます. -** 仮数部が 0, 1 以外のときは確率的に値が変化するという考え方を採用することで,インクリメントや加算を実現しました. -** カウントを繰り返すことによって誤差が発生するものの,ほとんどのカウンタでは 1% 以内に収まります. -* もっと Conservative Update -** 別のキーによるインクリメントをブロックするフラグの導入により誤差を抑えています. -** 確率的なカウンタを使うときだけ有効になります. -** カウンタのサイズは 21 ビットになりますが,カウンタ 3 つをまとめて 64 ビットに格納するため,1 ビットは無駄になります. -* フィルタの適用 -** すべてのカウンタに対して同じ関数を適用します. -** Lossy Conservative Update に使えます. -** カウンタが飽和してしまったときは,フィルタを使って全カウンタを引き下げた上で使いつづけるという手があります. -* スケッチの縮小 -** 元のサイズを割り切れるサイズへとスケッチを縮小することができます. -** 同時にカウンタの上限を変更したりフィルタを適用したりできます. -** たとえば,カウンタの上限を 1 にして { return value >= 10; } というフィルタを適用すれば,閾値を 10 とする 2 値のスケッチへと変換できます. -** 当初の想定では,誤差が許容できる程度に縮小するだけの機能でした. -* スケッチの合成 -** 二つのスケッチを合成できるようになっています. -** 別々に作成したスケッチを 1 つにまとめるという使い道があります. - -というわけで,なかなか味のあるライブラリに仕上がっています.実のところ,当初は Count-Min Sketch の実用性に懐疑的でした.それが今では,使いどころは難しいものの,かなり実用的なのではないかと考えるようになりました.今後の開発においては,Windows で動くようにすることや日本語のドキュメントを用意することに加えて,Count-Min Sketch の評価を進めることを予定しています. - -h3. おわりに - -Count-Min Sketch は興味深い手法であり,いろいろなところに応用できるはずです.しかし,ハッシュ表ほど汎用的な手法ではなく,知名度が低くて実例が少ないため,まだまだ選択肢としては貧弱です.ライブラリの開発が Count-Min Sketch が普及する一助になれば,それはとっても嬉しいなって思います. - -2 月 25 日に開催される "第9回自然言語処理勉強会 #TokyoNLP":http://atnd.org/events/25020 で発表する予定です. Renamed: ja/_posts/2012-02-29-release.md (+29 -18) 55% =================================================================== --- ja/_posts/2012-02-29-release.textile 2016-02-07 10:35:40 +0900 (812b9cc) +++ ja/_posts/2012-02-29-release.md 2016-02-07 10:50:24 +0900 (5359981) @@ -6,56 +6,67 @@ h2. groonga 2.0.0リリース 今日は4年に1度の肉の日ですね。 -"groonga 2.0.0":/ja/docs/news.html#release-2-0-0 をリリースしました! +[groonga 2.0.0](/ja/docs/news.html#release-2-0-0) をリリースしました! -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) 今回のリリースでメジャーバージョンがあがって2.0.0となっています!メジャーバージョンはあがりましたが、データベースのファイル形式は互換性があるのでデータベースを作りなおす必要はありません。 -h3. メジャーバージョンアップについて +### メジャーバージョンアップについて 1.xから2.xにメジャーバージョンがあがったのは今日が特別な日ということもありますが、より安心して使ってもらえることをアピールしたいという意図があります。 -1.0.0のリリースは "日本Ruby会議 2010":http://rubykaigi.org/2010/ja の最終日である2010/8/29でした。それから約1年半が経ち、継続的な機能拡張・バグフィックスを重ねることで、より広く使ってもらえるようになりました。 +1.0.0のリリースは [日本Ruby会議 2010](http://rubykaigi.org/2010/ja) +の最終日である2010/8/29でした。それから約1年半が経ち、継続的な機能拡張・バグフィックスを重ねることで、より広く使ってもらえるようになりました。 すでに利用されているみなさんはgroongaが毎月着実によくなっていることを実感していることでしょう。しかし、まだ利用されていない方々にはそこが届きにくいようです。そこで、メジャーバージョンをあげることで、よくなっている感を大きくアピールします。これを機会に、これまでgroongaの採用・検証を見送っていたみなさんにもgroongaが十分実用的な全文検索エンジンであることを試してもらえることを期待しています。 もし、まわりに「全文検索したいんだけどどうしよう…」という方がいたら、ぜひ「groongaが2.0になっているから試してみなよ!」とオススメしてください。 -h3. 新ロゴ +### 新ロゴ これまでは原住民のお面のようなロゴを使っていましたが、よりスタイリッシュなロゴに変更することにしました。 -!/images/logo.png(新しいロゴ)! +![新しいロゴ](/images/logo.png "新しいロゴ") -これらのロゴやpowered by groongaのようなバナーも準備を進めていて、近いうちに自由に簡単に利用できるような形で提供する予定です。groongaを使っている人はぜひ使ってください!(ステッカーも作る予定もあります。) +これらのロゴやpowered by +groongaのようなバナーも準備を進めていて、近いうちに自由に簡単に利用できるような形で提供する予定です。groongaを使っている人はぜひ使ってください!(ステッカーも作る予定もあります。) -h3. 新機能: オフラインインデックス作成に対応 +### 新機能: オフラインインデックス作成に対応 -"モーショノロジー2012 #1":/ja/publication/#motionology-2012-1 などで匂わしていたオフラインインデックス作成機能が実装されました。 +[モーショノロジー2012 #1](/ja/publication/#motionology-2012-1) +などで匂わしていたオフラインインデックス作成機能が実装されました。 -使い方は "インデックス構築":/ja/docs/indexing.html に関するドキュメントを参照してください。 +使い方は [インデックス構築](/ja/docs/indexing.html) +に関するドキュメントを参照してください。 こちらでtwitterのデータ100万件でインデックス作成時間を測定したところ、従来のオンラインインデックス作成時間と比べて1/3倍から1/10倍程度になっていました。(ナイーブに使った)Solrと比べてもgroongaの方が速いくらいでした。(Solrをよく知っている人にも検証してもらいたいです。) バッチ処理でデータを登録している方はぜひ活用してください。 -h3. Windows用バイナリの修正 +### Windows用バイナリの修正 -groonga 1.2の頃から "Windows用のバイナリファイルを提供":http://packages.groonga.org/windows/groonga/ しています。 +groonga 1.2の頃から +[Windows用のバイナリファイルを提供](http://packages.groonga.org/windows/groonga/) +しています。 実運用ではLinux上で動かすほうがオススメなのですが、Windows上でも動作確認やテストはできるものになっています。 -インストーラー(拡張子が.exe)の方を使うとgroonga用のコンソールも作られるので、まずは "チュートリアル":/ja/docs/tutorial.html をやってみてみようという場合はインストーラーの方が便利だと思います! +インストーラー(拡張子が.exe)の方を使うとgroonga用のコンソールも作られるので、まずは +[チュートリアル](/ja/docs/tutorial.html) +をやってみてみようという場合はインストーラーの方が便利だと思います! -h3. groongaサポートサービス開始 +### groongaサポートサービス開始 -"groongaを使った検索システムの検討から運用まで支援するサービス":/ja/support/ を開始しました。 +[groongaを使った検索システムの検討から運用まで支援するサービス](/ja/support/) +を開始しました。 -h3. 変更点 +### 変更点 -1.3.0からの変更点: "2.0.0リリース - 2012/02/29":/ja/docs/news.html#release-2-0-0 +1.3.0からの変更点: [2.0.0リリース - +2012/02/29](/ja/docs/news.html#release-2-0-0) -h3. さいごに +### さいごに 2.0.0になり、さらに改良を続けているgroongaをぜひ使ってみてください! Added: ja/_posts/2012-03-27-logo.md (+11 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-03-27-logo.md 2016-02-07 10:50:24 +0900 (eed05bd) @@ -0,0 +1,11 @@ +--- +layout: post.ja +title: 新しいロゴを公開 +--- +h2. 新しいロゴを公開 + +groongaの [新しいロゴ](/ja/logo/) +を公開しました。mroongaやrroongaなど関連プロジェクトのロゴも公開しています。 + +CC-BY +3.0のライセンスで利用できるので、groongaを使っている人はぜひロゴを使ってgroongaを広めてください! Deleted: ja/_posts/2012-03-27-logo.textile (+0 -9) 100644 =================================================================== --- ja/_posts/2012-03-27-logo.textile 2016-02-07 10:35:40 +0900 (b9cc2ea) +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: post.ja -title: 新しいロゴを公開 ---- -h2. 新しいロゴを公開 - -groongaの "新しいロゴ":/ja/logo/ を公開しました。mroongaやrroongaなど関連プロジェクトのロゴも公開しています。 - -CC-BY 3.0のライセンスで利用できるので、groongaを使っている人はぜひロゴを使ってgroongaを広めてください! Renamed: ja/_posts/2012-03-29-release.md (+12 -7) 50% =================================================================== --- ja/_posts/2012-03-29-release.textile 2016-02-07 10:35:40 +0900 (be55564) +++ ja/_posts/2012-03-29-release.md 2016-02-07 10:50:24 +0900 (d39750b) @@ -6,20 +6,25 @@ h2. groonga 2.0.1リリース 今日は肉の日ですね。 -"groonga 2.0.1":/ja/docs/news.html#release-2-0-1 がリリースされました! +[groonga 2.0.1](/ja/docs/news.html#release-2-0-1) がリリースされました! -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) -h3. 新しいロゴを公開 +### 新しいロゴを公開 -"前の記事":{% post_url 2012-03-27-logo %} でも紹介しましたが、 "新しいロゴをCC-BY 3.0ライセンスで公開":/ja/logo/ しました。 +[前の記事]({%) post_url 2012-03-27-logo %} でも紹介しましたが、 +[新しいロゴをCC-BY 3.0ライセンスで公開](/ja/logo/) しました。 groonga以外にもmroongaやrroongaやnroongaなど関連プロジェクト用のロゴも提供しています。みなさんのプロジェクトでgroongaや関連プロジェクトを使っている場合は、どうぞこのロゴを使ってgroongaと関連プロジェクトを広めてください! また、これから新しくgroonga関連プロジェクトをはじめる人もこの新しいロゴを変更して、そのプロジェクト用のロゴを作ってもOKです。(例えば、色味や文字を変えるなど。) -"groongaの利用例を紹介するページ":/ja/users/ もあるので、こちらに載せてもいいよ!という方はぜひgroon****@groon***** までご連絡ください! +[groongaの利用例を紹介するページ](/ja/users/) +もあるので、こちらに載せてもいいよ!という方はぜひgroon****@groon***** +までご連絡ください! -h3. 変更点 +### 変更点 -2.0.0からの変更点: "2.0.1リリース - 2012/03/29":/ja/docs/news.html#release-2-0-1 +2.0.0からの変更点: [2.0.1リリース - +2012/03/29](/ja/docs/news.html#release-2-0-1) Added: ja/_posts/2012-04-29-release.md (+69 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-04-29-release.md 2016-02-07 10:50:24 +0900 (0bd0ac0) @@ -0,0 +1,69 @@ +--- +layout: post.ja +title: groonga 2.0.2リリース +--- +h2. groonga 2.0.2リリース + +今日は肉の日ですね。 + +[groonga 2.0.2](/ja/docs/news.html#release-2-0-2) がリリースされました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +今回のリリースの主なトピックは以下の3つです。 + +- パッケージ署名用の鍵を変更 +- 類似文書検索のサポート +- 管理画面にサジェスト機能用ページを追加 + +### パッケージ署名用の鍵を変更 + +今回のリリースからgroonga開発チームとして継続的にリリースを行うためにgroongaパッケージ署名用の鍵を作成しました。新しい鍵は以下の通りです。 + + % gpg --list-keys --fingerprint 45499429 + pub 1024D/45499429 2012-04-28 + Key fingerprint = C97E 4649 A205 1D0C EA1A 73F9 72A7 496B 4549 9429 + uid groonga Key (groonga Official Signing Key) + +鍵の変更に伴ってパッケージのインストール方法が少し変わっています。詳細は +[インストール](/ja/docs/install.html) ページを確認してください。 + +すでにパッケージをインストールしていて、これからアップグレードする場合は以下のように新しい鍵をインポートしてください。 + +Debian/Ubuntu: + + % sudo apt-get update + % sudo apt-get -V -y install groonga-keyring + +CentOS/Fedora: + + % sudo yum makechace + % sudo yum install --nogpgcheck -y groonga-repository + +### 類似文書検索のサポート + +今回のリリースから類似文書検索がサポートされました。 + +Sennaの頃から類似文書検索はサポートされていて、これまでも内部的には類似文書検索は実装されていたのですが、 +`select` コマンドで使うことができませんでした。 + +類似文書検索を使うには `select` コマンドの `--filter` オプションに +`column *S 'TEXT'` という条件を指定してください。この条件は、 `column` +に格納されている文書が `'TEXT'` +に類似しているレコードを検索する、という意味になります + +### 管理画面にサジェスト機能用ページを追加 + +groongaにはブラウザベースの管理ツールがありますが、その管理ツールで +[サジェスト機能](/ja/doc/suggest.html) +を試すことができるようになりました。 + +現在サポートしているのは、すでにセットアップされたサジェスト用データセットに対する検索のみです。サジェスト用データセットの作成や学習、学習結果の補正などといったことはできません。 + +### さいごに + +2.0.1からの詳細な変更点は [2.0.2リリース - +2012/04/29](/ja/docs/news.html#release-2-0-2) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2012-04-29-release.textile (+0 -66) 100644 =================================================================== --- ja/_posts/2012-04-29-release.textile 2016-02-07 10:35:40 +0900 (588fdcc) +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: post.ja -title: groonga 2.0.2リリース ---- -h2. groonga 2.0.2リリース - -今日は肉の日ですね。 - -"groonga 2.0.2":/ja/docs/news.html#release-2-0-2 がリリースされました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -今回のリリースの主なトピックは以下の3つです。 - -* パッケージ署名用の鍵を変更 -* 類似文書検索のサポート -* 管理画面にサジェスト機能用ページを追加 - -h3. パッケージ署名用の鍵を変更 - -今回のリリースからgroonga開発チームとして継続的にリリースを行うためにgroongaパッケージ署名用の鍵を作成しました。新しい鍵は以下の通りです。 - -<pre> -% gpg --list-keys --fingerprint 45499429 -pub 1024D/45499429 2012-04-28 - Key fingerprint = C97E 4649 A205 1D0C EA1A 73F9 72A7 496B 4549 9429 -uid groonga Key (groonga Official Signing Key) <packages �� groonga.org> -</pre> - -鍵の変更に伴ってパッケージのインストール方法が少し変わっています。詳細は "インストール":/ja/docs/install.html ページを確認してください。 - -すでにパッケージをインストールしていて、これからアップグレードする場合は以下のように新しい鍵をインポートしてください。 - -Debian/Ubuntu: - -<pre> -% sudo apt-get update -% sudo apt-get -V -y install groonga-keyring -</pre> - -CentOS/Fedora: - -<pre> -% sudo yum makechace -% sudo yum install --nogpgcheck -y groonga-repository -</pre> - -h3. 類似文書検索のサポート - -今回のリリースから類似文書検索がサポートされました。 - -Sennaの頃から類似文書検索はサポートされていて、これまでも内部的には類似文書検索は実装されていたのですが、 @select@ コマンドで使うことができませんでした。 - -類似文書検索を使うには @select@ コマンドの @--filter@ オプションに @column *S 'TEXT'@ という条件を指定してください。この条件は、 @column@ に格納されている文書が @'TEXT'@ に類似しているレコードを検索する、という意味になります - -h3. 管理画面にサジェスト機能用ページを追加 - -groongaにはブラウザベースの管理ツールがありますが、その管理ツールで "サジェスト機能":/ja/doc/suggest.html を試すことができるようになりました。 - -現在サポートしているのは、すでにセットアップされたサジェスト用データセットに対する検索のみです。サジェスト用データセットの作成や学習、学習結果の補正などといったことはできません。 - -h3. さいごに - -2.0.1からの詳細な変更点は "2.0.2リリース - 2012/04/29":/ja/docs/news.html#release-2-0-2 を確認してください。 - -それでは、groongaでガンガン検索してください! Added: ja/_posts/2012-05-29-release.md (+83 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-05-29-release.md 2016-02-07 10:50:24 +0900 (b85da64) @@ -0,0 +1,83 @@ +--- +layout: post.ja +title: groonga 2.0.3リリース +--- +h2. groonga 2.0.3リリース + +今日は肉の日ですね。 + +[groonga 2.0.3](/ja/docs/news.html#release-2-0-3) がリリースされました! + +このリリースにはいくつかバグ修正が含まれています。以下のどちらかのケースに該当する場合はアップグレードをオススメします。2.0.2にある問題が修正されています。 + +- selectコマンドの `--filter` 引数で `&!` 演算子を使っている。( `&!` + 演算子はドキュメントに書いていないので知らない人の方が多いはず。) +- rroongaで以下のようなスキーマのデータを更新している。 + - キーを正規化するテーブルがある。 + - ↑のテーブルを型として持つベクターカラムがある。 + - ↑のベクターカラムにインデックスを設定している。具体例: [rroonga + / test / + test-table.rb](https://github.com/ranguba/rroonga/blob/88877cb24c560740d4ad2b4bf92594edda255a4c/test/test-table.rb#L204) + +今回のリリースの主なトピックは以下の2つです。 + +- ドキュメントの改善 +- ビルド方法の改善(CMake対応) + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +### groongaドキュメントの改善 + +今回のリリースではドキュメントを改善しました。ドキュメントの改善は引き続き行なっていきます。 + +まず、ドキュメント中の実行例のフォーマットを改善しました。これまでは以下のように「プロンプト+コマンド」と「実行結果」というフォーマットでした。 + + > status + [[...], ...] + +これを以下のように「コマンド」と「コメント内に実行結果」というフォーマットにしました。 + + status + # [[...], ...] + +これにより、ドキュメント中の実行結果をそのままコピー&ペーストして手元で試せるようになりました。(実行結果の部分はコメントとしてgroongaから無視されるため。) + +また、 [select](/ja/docs/commands/select.html) +コマンドの説明を充実させました。 + +selectコマンドはgroongaが提供するコマンドの中でも特に重要なコマンドのため、より理解しやすくなるように今後も説明を充実させていく予定です。 + +### ビルド方法の改善 + +これまで、Windows用の実行ファイルは公式にはMinGWでしかビルドできませんでした。(ドキュメントには書いていなかったのですが、Visual +Studioでビルドするためのビルドスクリプトがあり、これまでもMinGWではなくVisual +Studioでもビルドできました。) + +今回のリリースでCMakeサポートを強化し、Windows用の実行ファイルを [Visual +Studio 2010 +Expressでビルド](/ja/docs/install/windows.html#build-from-source) +できるようになりました。 + +公式パッケージではこれまで通りconfigure + +MinGWでクロスコンパイルしたものを提供しますが、Visual +Studioでビルドしたものが必要という場合は上記の手順に従って各自でビルドしてください。(例えば、他のライブラリがVisual +StudioでビルドしているためgroongaもVisual +Studioでビルドしたい場合など。) + +今回からtar.gzだけでなくzipでもソースを提供するようにしたので、Windows上でビルドする場合はそちらを利用してください。 + +また、Oracle Solaris +11でビルドするためのドキュメントも追加したので、Oracle +Solarisでgroongaを利用する場合は [こちら](/ja/docs/install/solaris.html) +を参考にしてください。 + +なお、Oracle Solaris用のパッケージは提供していないので、Oracle +Solaris上でgroongaを利用する場合は自分でビルドする必要があります。 + +### さいごに + +2.0.2からの詳細な変更点は [2.0.3リリース - +2012/05/29](/ja/docs/news.html#release-2-0-3) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2012-05-29-release.textile (+0 -68) 100644 =================================================================== --- ja/_posts/2012-05-29-release.textile 2016-02-07 10:35:40 +0900 (898d603) +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: post.ja -title: groonga 2.0.3リリース ---- -h2. groonga 2.0.3リリース - -今日は肉の日ですね。 - -"groonga 2.0.3":/ja/docs/news.html#release-2-0-3 がリリースされました! - -このリリースにはいくつかバグ修正が含まれています。以下のどちらかのケースに該当する場合はアップグレードをオススメします。2.0.2にある問題が修正されています。 - -* selectコマンドの @--filter@ 引数で @&!@ 演算子を使っている。( @&!@ 演算子はドキュメントに書いていないので知らない人の方が多いはず。) -* rroongaで以下のようなスキーマのデータを更新している。 -** キーを正規化するテーブルがある。 -** ↑のテーブルを型として持つベクターカラムがある。 -** ↑のベクターカラムにインデックスを設定している。具体例: "rroonga / test / test-table.rb":https://github.com/ranguba/rroonga/blob/88877cb24c560740d4ad2b4bf92594edda255a4c/test/test-table.rb#L204 - -今回のリリースの主なトピックは以下の2つです。 - -* ドキュメントの改善 -* ビルド方法の改善(CMake対応) - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -h3. groongaドキュメントの改善 - -今回のリリースではドキュメントを改善しました。ドキュメントの改善は引き続き行なっていきます。 - -まず、ドキュメント中の実行例のフォーマットを改善しました。これまでは以下のように「プロンプト+コマンド」と「実行結果」というフォーマットでした。 - -<pre> -> status -[[...], ...] -</pre> - -これを以下のように「コマンド」と「コメント内に実行結果」というフォーマットにしました。 - -<pre> -status -# [[...], ...] -</pre> - -これにより、ドキュメント中の実行結果をそのままコピー&ペーストして手元で試せるようになりました。(実行結果の部分はコメントとしてgroongaから無視されるため。) - -また、 "select":/ja/docs/commands/select.html コマンドの説明を充実させました。 - -selectコマンドはgroongaが提供するコマンドの中でも特に重要なコマンドのため、より理解しやすくなるように今後も説明を充実させていく予定です。 - -h3. ビルド方法の改善 - -これまで、Windows用の実行ファイルは公式にはMinGWでしかビルドできませんでした。(ドキュメントには書いていなかったのですが、Visual Studioでビルドするためのビルドスクリプトがあり、これまでもMinGWではなくVisual Studioでもビルドできました。) - -今回のリリースでCMakeサポートを強化し、Windows用の実行ファイルを "Visual Studio 2010 Expressでビルド":/ja/docs/install/windows.html#build-from-source できるようになりました。 - -公式パッケージではこれまで通りconfigure + MinGWでクロスコンパイルしたものを提供しますが、Visual Studioでビルドしたものが必要という場合は上記の手順に従って各自でビルドしてください。(例えば、他のライブラリがVisual StudioでビルドしているためgroongaもVisual Studioでビルドしたい場合など。) - -今回からtar.gzだけでなくzipでもソースを提供するようにしたので、Windows上でビルドする場合はそちらを利用してください。 - -また、Oracle Solaris 11でビルドするためのドキュメントも追加したので、Oracle Solarisでgroongaを利用する場合は "こちら":/ja/docs/install/solaris.html を参考にしてください。 - -なお、Oracle Solaris用のパッケージは提供していないので、Oracle Solaris上でgroongaを利用する場合は自分でビルドする必要があります。 - -h3. さいごに - -2.0.2からの詳細な変更点は "2.0.3リリース - 2012/05/29":/ja/docs/news.html#release-2-0-3 を確認してください。 - -それでは、groongaでガンガン検索してください! Added: ja/_posts/2012-06-29-release.md (+93 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-06-29-release.md 2016-02-07 10:50:24 +0900 (4865fbc) @@ -0,0 +1,93 @@ +--- +layout: post.ja +title: groonga 2.0.4リリース +--- +h2. groonga 2.0.4リリース + +今日は肉の日ですね。 + +[groonga 2.0.4](/ja/docs/news.html#release-2-0-4) がリリースされました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +今回のリリースの主なトピックは3つあります。 + +- nginxベースのHTTPサーバーを実験的に追加 +- groongaドキュメントの更新 +- 位置情報から距離を計算する組み込み関数の改善 + +### nginxベースのHTTPサーバーを実験的に追加 + +groongaはデフォルトで +[HTTPサーバー](/ja/docs/executables/groonga-http.html) +機能を提供しています。 + +ただしHTTPサーバーとしては最小限機能しかありませんでしたので、例えば接続元の制限を行うためには別途iptablesなどと組み合わせて使う必要がありました。 + +今回のリリースではnginxをHTTPリクエストを処理するために組み込んだ +`groonga-httpd` コマンドを実験的ではありますが、新たに提供します。 +(groongaコマンドの `--protocol http` +オプションも従来通り使い続けることができます。) + +nginxを組込むことにより、nginxの持つHTTPサーバーとしての高度な機能をほぼそのまま使うことができるようになりました。 + +以下はnginxベースの `groonga-httpd` +コマンドを利用するメリットの一例です。 + +- gzipフィルターに対応しているのでサーバーレスポンス帯域を節約できるようになります +- HTTP1.1のキープアライブやパイプライン処理によりHTTPの処理効率が向上します +- アクセスログを柔軟にカスタマイズできるようになります +- アクセスコントロール手段としてiptablesの他に各種認証方法を組み合わせることができるようになります +- 同時接続数や同時リクエスト数の設定による負荷の調整を行えるようになります +- 通信経路の安全性を高めるためにHTTPSを使用することができるようになります +- 名前ベースでHTTPサーバーを稼動させることができるようになります +- 高負荷状態での稼動実績のあるnginxをモジュールとして採用しているため、HTTPサーバー処理の安定稼動が期待できるようになります + +nginxベースのHTTPサーバーについては +[groonga-httpd](/ja/docs/executables/groonga-httpd.html) +コマンドを参照してください。 + +注意: 今回のリリースで提供しているバイナリのうち、@groonga-httpd@ +はWindowsをサポートしていません。 `groonga-httpd` +のWindowsサポートは次回リリース以降を予定しています。 + +### groongaドキュメントの更新 + +今回のリリースではドキュメントの更新を行いました。 + +とりわけ、特定の条件にマッチするレコードを検索したり、データベースを操作するときに使用する +[grn_expr (ぐるんしき)](/ja/docs/reference/grn_expr.html) +の説明を充実させました。 + +全文検索やフレーズ検索、前方一致検索や後方一致検索をするときの +[クエリ構文](/ja/docs/reference/grn_expr/query_syntax.html) +を解説しています。 + +スキーマ定義とサンプルデータによる実行例も併記してありますので、すぐに機能を確認することができます。 + +### 位置情報から距離を計算する組み込み関数の改善 + +groongaでは位置情報から距離を計算する組み込み関数として `geo_distance` +を提供しています。 + +`geo_distance` +には子午線や日付変更線、赤道などのいわゆる境界をまたいだ距離の計算が正しく行えない制限があります。 + +`geo_distance` +では距離を計算する際に地形をどのように近似して計算するかを方形近似、球面近似、 +楕円近似の3つのうちから選択できます。 + +今回のリリースでは方形近似を選択した場合について、部分的にこの問題を改善しています。 + +具体的には二点が北半球の範囲にある場合において東経/西経をまたいでも正しく距離を計算できるようになりました。 + +[geo_distance](/ja/docs/functions/geo_distance.html) +の説明も具体例を充実させました。 + +### さいごに + +2.0.3からの詳細な変更点は [2.0.4リリース +2012/06/29](/ja/docs/news.html#release-2-0-4) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2012-06-29-release.textile (+0 -74) 100644 =================================================================== --- ja/_posts/2012-06-29-release.textile 2016-02-07 10:35:40 +0900 (f6854a1) +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: post.ja -title: groonga 2.0.4リリース ---- -h2. groonga 2.0.4リリース - -今日は肉の日ですね。 - -"groonga 2.0.4":/ja/docs/news.html#release-2-0-4 がリリースされました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -今回のリリースの主なトピックは3つあります。 - -* nginxベースのHTTPサーバーを実験的に追加 -* groongaドキュメントの更新 -* 位置情報から距離を計算する組み込み関数の改善 - -h3. nginxベースのHTTPサーバーを実験的に追加 - -groongaはデフォルトで "HTTPサーバー":/ja/docs/executables/groonga-http.html 機能を提供しています。 - -ただしHTTPサーバーとしては最小限機能しかありませんでしたので、例えば接続元の制限を行うためには別途iptablesなどと組み合わせて使う必要がありました。 - -今回のリリースではnginxをHTTPリクエストを処理するために組み込んだ @groonga-httpd@ コマンドを実験的ではありますが、新たに提供します。 (groongaコマンドの @--protocol http@ オプションも従来通り使い続けることができます。) - -nginxを組込むことにより、nginxの持つHTTPサーバーとしての高度な機能をほぼそのまま使うことができるようになりました。 - -以下はnginxベースの @groonga-httpd@ コマンドを利用するメリットの一例です。 - -* gzipフィルターに対応しているのでサーバーレスポンス帯域を節約できるようになります -* HTTP1.1のキープアライブやパイプライン処理によりHTTPの処理効率が向上します -* アクセスログを柔軟にカスタマイズできるようになります -* アクセスコントロール手段としてiptablesの他に各種認証方法を組み合わせることができるようになります -* 同時接続数や同時リクエスト数の設定による負荷の調整を行えるようになります -* 通信経路の安全性を高めるためにHTTPSを使用することができるようになります -* 名前ベースでHTTPサーバーを稼動させることができるようになります -* 高負荷状態での稼動実績のあるnginxをモジュールとして採用しているため、HTTPサーバー処理の安定稼動が期待できるようになります - -nginxベースのHTTPサーバーについては "groonga-httpd":/ja/docs/executables/groonga-httpd.html コマンドを参照してください。 - - -注意: 今回のリリースで提供しているバイナリのうち、@groonga-httpd@ はWindowsをサポートしていません。 @groonga-httpd@ のWindowsサポートは次回リリース以降を予定しています。 - -h3. groongaドキュメントの更新 - -今回のリリースではドキュメントの更新を行いました。 - -とりわけ、特定の条件にマッチするレコードを検索したり、データベースを操作するときに使用する "grn_expr (ぐるんしき)":/ja/docs/reference/grn_expr.html の説明を充実させました。 - - -全文検索やフレーズ検索、前方一致検索や後方一致検索をするときの "クエリ構文":/ja/docs/reference/grn_expr/query_syntax.html を解説しています。 - -スキーマ定義とサンプルデータによる実行例も併記してありますので、すぐに機能を確認することができます。 - -h3. 位置情報から距離を計算する組み込み関数の改善 - -groongaでは位置情報から距離を計算する組み込み関数として @geo_distance@ を提供しています。 - - �� geo_distance@ には子午線や日付変更線、赤道などのいわゆる境界をまたいだ距離の計算が正しく行えない制限があります。 - - �� geo_distance@ では距離を計算する際に地形をどのように近似して計算するかを方形近似、球面近似、 楕円近似の3つのうちから選択できます。 - -今回のリリースでは方形近似を選択した場合について、部分的にこの問題を改善しています。 - -具体的には二点が北半球の範囲にある場合において東経/西経をまたいでも正しく距離を計算できるようになりました。 - -"geo_distance":/ja/docs/functions/geo_distance.html の説明も具体例を充実させました。 - -h3. さいごに - -2.0.3からの詳細な変更点は "2.0.4リリース 2012/06/29":/ja/docs/news.html#release-2-0-4 を確認してください。 - -それでは、groongaでガンガン検索してください! Added: ja/_posts/2012-07-29-release.md (+112 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-07-29-release.md 2016-02-07 10:50:24 +0900 (a142d1d) @@ -0,0 +1,112 @@ +--- +layout: post.ja +title: groonga 2.0.5リリース +description: groonga 2.0.5がリリースされました! +--- +h2. groonga 2.0.5リリース + +今日は肉の日ですね。 + +[groonga 2.0.5](/ja/docs/news.html#release-2-0-5) がリリースされました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +今回のリリースの主なトピックは4つあります。 + +- 近傍検索を行う `'column *N "word1 word2 ..."'` 構文をサポート +- groongaドキュメントの更新 +- groonga-httpdの機能強化 +- 位置情報から距離を計算する組み込み関数の改善 + +### 近傍検索を行う `'column *N "word1 word2 ..."'` 構文をサポート + +groongaでは近傍検索を行うための構文が用意されていましたが、実際には近傍検索を行うことができませんでした。 + +近傍検索とはすべての単語が含まれていてかつそれぞれの単語が文章内で近くにあるレコードを検索することです。 + +近くにあるかどうかは単語の距離が10以内にあるかどうかです。今のところ、この値は固定となっていて変更できません。 +距離の単位は距離の単位はN-gram系のトークナイザーでは文字数で、形態素解析系のトークナイザーでは単語数となっています。 + +近傍検索を行うには `'column *N "word1 word2 ..."'` +構文を使います。実際の使用例については +[近傍検索](/ja/docs/reference/grn_expr/script_syntax.html#near-search-operator) +を参照してください。 + +### groongaドキュメントの更新 + +今回のリリースではドキュメントの更新を行いました。 + +groongaには +[スクリプト構文](/ja/docs/reference/grn_expr/script_syntax.html) +と呼んでいるECMAScriptに類似した構文で条件式などを表現するための構文があります。 + +ECMAScriptにあるような基本的な演算子やリテラルの説明や、groonga独自に追加した検索用の演算子の説明を追加しました。 + +スキーマ定義とサンプルデータによる実行例も併記してありますので、すぐに機能を確認することができます。 + +### `groonga-httpd` の機能強化 + +groonga-httpdの機能強化のポイントは2つあります。 + +- groonga-httpdのベースパスのカスタマイズをサポート +- locationディレクティブによる複数データベースのサポート + +まず最初に紹介する機能強化ポイントはベースパスのカスタマイズについてです。 + +これまで `groonga-httpd` ではgroongaのHTTPサーバー機能と同様に +`/d/command?parameter1=value&...` +というリクエスト形式しかサポートしていませんでした。 + +今回のリリースではURIのベースパスをカスタマイズするための +`groonga_base_path` ディレクティブを追加しました。 + +これにより/d/以外のプレフィクスのリクエストも受け付けることができるようになります。 + +`groonga_base_path` +を活用することで、特定のコマンドを実行する際に認証をかける設定を行うことができるようになります。 + +具体例として +[shutdownコマンドに認証をかける設定方法](/ja/docs/reference/executables/groonga-httpd.html#groonga-base-path) +を紹介しています。 + +もう一つの機能強化ポイントは複数データベースのサポートです。 + +従来提供していたgroongaのHTTPサーバー機能ではプロセスが扱えるデータベースが1つに限定されていました。 + +今回のリリースではlocationディレクティブごとに対応するデータベースを +`groonga_database` +ディレクティブによって指定することができるようになりました。 + +前述のベースパスのカスタマイズと組み合わせることで、 `groonga-httpd` +では複数のデータベースをあたかも1つのデータソースであるかのようにまとめて扱うことができるようになります。 + +ディレクティブについては +[設定ディレクティブ](/ja/docs/reference/executables/groonga-httpd.html#configuration-directives) +を参照してください。 + +### 位置情報から距離を計算する組み込み関数の改善 + +groongaでは位置情報から距離を計算する組み込み関数として `geo_distance` +を提供しています。 + +`geo_distance` +には子午線や日付変更線、赤道などのいわゆる境界をまたいだ距離の計算が正しく行えない制限があります。 + +`geo_distance` +では距離を計算する際に地形をどのように近似して計算するかを方形近似、球面近似、 +楕円近似の3つのうちから選択できます。 + +今回のリリースでは方形近似を選択した場合について、部分的にこの問題を改善しています。 + +具体的には二点が南半球の範囲にある場合において東経/西経をまたいでも正しく距離を計算できるようになりました。 + +[geo_distance](/ja/docs/functions/geo_distance.html) +もこれに合わせて更新しています。 + +### さいごに + +2.0.4からの詳細な変更点は [2.0.5リリース +2012/07/29](/ja/docs/news.html#release-2-0-5) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2012-07-29-release.textile (+0 -89) 100644 =================================================================== --- ja/_posts/2012-07-29-release.textile 2016-02-07 10:35:40 +0900 (fd855aa) +++ /dev/null @@ -1,89 +0,0 @@ ---- -layout: post.ja -title: groonga 2.0.5リリース -description: groonga 2.0.5がリリースされました! ---- -h2. groonga 2.0.5リリース - -今日は肉の日ですね。 - -"groonga 2.0.5":/ja/docs/news.html#release-2-0-5 がリリースされました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -今回のリリースの主なトピックは4つあります。 - -* 近傍検索を行う @'column *N "word1 word2 ..."'@ 構文をサポート -* groongaドキュメントの更新 -* groonga-httpdの機能強化 -* 位置情報から距離を計算する組み込み関数の改善 - -h3. 近傍検索を行う @'column *N "word1 word2 ..."'@ 構文をサポート - -groongaでは近傍検索を行うための構文が用意されていましたが、実際には近傍検索を行うことができませんでした。 - -近傍検索とはすべての単語が含まれていてかつそれぞれの単語が文章内で近くにあるレコードを検索することです。 - -近くにあるかどうかは単語の距離が10以内にあるかどうかです。今のところ、この値は固定となっていて変更できません。 -距離の単位は距離の単位はN-gram系のトークナイザーでは文字数で、形態素解析系のトークナイザーでは単語数となっています。 - -近傍検索を行うには @'column *N "word1 word2 ..."'@ 構文を使います。実際の使用例については "近傍検索":/ja/docs/reference/grn_expr/script_syntax.html#near-search-operator を参照してください。 - -h3. groongaドキュメントの更新 - -今回のリリースではドキュメントの更新を行いました。 - -groongaには "スクリプト構文":/ja/docs/reference/grn_expr/script_syntax.html と呼んでいるECMAScriptに類似した構文で条件式などを表現するための構文があります。 - -ECMAScriptにあるような基本的な演算子やリテラルの説明や、groonga独自に追加した検索用の演算子の説明を追加しました。 - -スキーマ定義とサンプルデータによる実行例も併記してありますので、すぐに機能を確認することができます。 - -h3. @groonga-httpd@ の機能強化 - -groonga-httpdの機能強化のポイントは2つあります。 - -* groonga-httpdのベースパスのカスタマイズをサポート -* locationディレクティブによる複数データベースのサポート - -まず最初に紹介する機能強化ポイントはベースパスのカスタマイズについてです。 - -これまで @groonga-httpd@ ではgroongaのHTTPサーバー機能と同様に @/d/command?parameter1=value&...@ というリクエスト形式しかサポートしていませんでした。 - -今回のリリースではURIのベースパスをカスタマイズするための @groonga_base_path@ ディレクティブを追加しました。 - -これにより/d/以外のプレフィクスのリクエストも受け付けることができるようになります。 - - �� groonga_base_path@ を活用することで、特定のコマンドを実行する際に認証をかける設定を行うことができるようになります。 - -具体例として "shutdownコマンドに認証をかける設定方法":/ja/docs/reference/executables/groonga-httpd.html#groonga-base-path を紹介しています。 - -もう一つの機能強化ポイントは複数データベースのサポートです。 - -従来提供していたgroongaのHTTPサーバー機能ではプロセスが扱えるデータベースが1つに限定されていました。 - -今回のリリースではlocationディレクティブごとに対応するデータベースを @groonga_database@ ディレクティブによって指定することができるようになりました。 - -前述のベースパスのカスタマイズと組み合わせることで、 @groonga-httpd@ では複数のデータベースをあたかも1つのデータソースであるかのようにまとめて扱うことができるようになります。 - -ディレクティブについては "設定ディレクティブ":/ja/docs/reference/executables/groonga-httpd.html#configuration-directives を参照してください。 - -h3. 位置情報から距離を計算する組み込み関数の改善 - -groongaでは位置情報から距離を計算する組み込み関数として @geo_distance@ を提供しています。 - - �� geo_distance@ には子午線や日付変更線、赤道などのいわゆる境界をまたいだ距離の計算が正しく行えない制限があります。 - - �� geo_distance@ では距離を計算する際に地形をどのように近似して計算するかを方形近似、球面近似、 楕円近似の3つのうちから選択できます。 - -今回のリリースでは方形近似を選択した場合について、部分的にこの問題を改善しています。 - -具体的には二点が南半球の範囲にある場合において東経/西経をまたいでも正しく距離を計算できるようになりました。 - -"geo_distance":/ja/docs/functions/geo_distance.html もこれに合わせて更新しています。 - -h3. さいごに - -2.0.4からの詳細な変更点は "2.0.5リリース 2012/07/29":/ja/docs/news.html#release-2-0-5 を確認してください。 - -それでは、groongaでガンガン検索してください! Added: ja/_posts/2012-08-29-release.md (+85 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-08-29-release.md 2016-02-07 10:50:24 +0900 (1ff23f7) @@ -0,0 +1,85 @@ +--- +layout: post.ja +title: groonga 2.0.6リリース +description: groonga 2.0.6がリリースされました! +--- +h2. groonga 2.0.6リリース + +今日は肉の日ですね。 + +[groonga 2.0.6](/ja/docs/news.html#release-2-0-6) がリリースされました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +今回のリリースの主なトピックは3つあります。 + +- 特定の語句を含まないレコードの検索をサポート +- groongaサーバーについてのドキュメントの追加 +- `groonga-httpd` で `http_rewrite_module` のサポート + +### 特定の語句を含まないレコードの検索をサポート + +全文検索を行うときにBOOLEAN +MODEでマイナス記号をつけて特定の語句が検索結果に含まれないようにする機能をサポートしました。 + +例えば、「明日」を含まないレコードの検索を以下のようなクエリで実現できるようになりました。(下記の例では、diariesテーブルのcontentカラムから「明日」が含まれないレコードを検索しています。) + + select diaries --match_columns content --query "-明日" --query_flags ALLOW_LEADING_NOT + +注意として、この検索を行うには `--query_flags` に `ALLOW_LEADING_NOT` +の指定が必要です。また、 `ALLOW_LEADING_NOT` +は重い処理なので濫用するとパフォーマンスに影響します。 + +`--query_flags` +には、他にも痒いところに手が届くような便利なオプションを追加しています。 + +例えば、カラムを検索する際に、 `--query` "title:(検索したいキーワード)" +を指定するとtitleカラムを指定したキーワードで検索するという振舞をします。 + +これは通常の検索の場合には望ましい振舞いですが、キーワード自体に:を含むなど、そのままではうまく検索できないようなケースがありました。 + +指定したキーワードを特に解釈せずそのまま検索できるようにするには +`--query_flags` オプションに `'NONE'` +を指定することでお望みの検索を行えます。 + +[`--query_flags` +オプション](/ja/docs/reference/commands/select.html#query-flags) +には今回紹介した `'ALLOW_LEADING_NOT'` や `'NONE'` +の他にもいくつか種類があります。 + +### groongaサーバーについてのドキュメントの追加 + +今回のリリースではドキュメントの更新を行いました。 + +groongaをサーバー用途で使うときにはどんな選択肢があるでしょうか。 + +まずは提供しているプロトコルを選択する必要があります。groongaで提供しているプロトコルはGQTPとHTTPの2つがあります。 + +HTTPプロトコルを選択した場合には、groongaもしくはgroonga-httpdという実装の違いによる選択肢があります。 + +それではそれらプロトコルやサーバー実装についてどのように選んだら良いのでしょうか。 + +そういったサーバー用途で使うときに気になるポイントについて、 +[比較表](/ja/docs/server/http/comparison.html) +を用意しました。検討するときの参考にしてください。 + +### `groonga-httpd` で `http_rewrite_module` のサポート + +`groonga-httpd` の機能強化のポイントとしてPCREの自動検出があります。 + +これまで、 `groonga-httpd` では、PCREをリンクしていなかったため明示的に +`http_rewrite_module` を無効にしていました。 + +今回のリリースではPCREの自動検出をサポートし、なおかつ +`http_rewrite_module` が使えるようにPCREを必須としました。 + +以前紹介した、 `groonga-httpd` +の複数データベースのサポートやベースパスのカスタマイズと組合せることでより柔軟にgroongaサーバーの運用を行えるようになります。 + +### さいごに + +2.0.5からの詳細な変更点は [2.0.6リリース +2012/08/29](/ja/docs/news.html#release-2-0-6) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2012-08-29-release.textile (+0 -70) 100644 =================================================================== --- ja/_posts/2012-08-29-release.textile 2016-02-07 10:35:40 +0900 (acef823) +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: post.ja -title: groonga 2.0.6リリース -description: groonga 2.0.6がリリースされました! ---- -h2. groonga 2.0.6リリース - -今日は肉の日ですね。 - -"groonga 2.0.6":/ja/docs/news.html#release-2-0-6 がリリースされました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -今回のリリースの主なトピックは3つあります。 - -* 特定の語句を含まないレコードの検索をサポート -* groongaサーバーについてのドキュメントの追加 -* @groonga-httpd@ で @http_rewrite_module@ のサポート - -h3. 特定の語句を含まないレコードの検索をサポート - -全文検索を行うときにBOOLEAN MODEでマイナス記号をつけて特定の語句が検索結果に含まれないようにする機能をサポートしました。 - -例えば、「明日」を含まないレコードの検索を以下のようなクエリで実現できるようになりました。(下記の例では、diariesテーブルのcontentカラムから「明日」が含まれないレコードを検索しています。) - -<pre> - select diaries --match_columns content --query "-明日" --query_flags ALLOW_LEADING_NOT -</pre> - -注意として、この検索を行うには @--query_flags@ に @ALLOW_LEADING_NOT@ の指定が必要です。また、 @ALLOW_LEADING_NOT@ は重い処理なので濫用するとパフォーマンスに影響します。 - - �� --query_flags@ には、他にも痒いところに手が届くような便利なオプションを追加しています。 - -例えば、カラムを検索する際に、 @--query@ "title:(検索したいキーワード)" を指定するとtitleカラムを指定したキーワードで検索するという振舞をします。 - -これは通常の検索の場合には望ましい振舞いですが、キーワード自体に:を含むなど、そのままではうまく検索できないようなケースがありました。 - -指定したキーワードを特に解釈せずそのまま検索できるようにするには @--query_flags@ オプションに @'NONE'@ を指定することでお望みの検索を行えます。 - -"@--query_flags@ オプション":/ja/docs/reference/commands/select.html#query-flags には今回紹介した @'ALLOW_LEADING_NOT'@ や @'NONE'@ の他にもいくつか種類があります。 - -h3. groongaサーバーについてのドキュメントの追加 - -今回のリリースではドキュメントの更新を行いました。 - -groongaをサーバー用途で使うときにはどんな選択肢があるでしょうか。 - -まずは提供しているプロトコルを選択する必要があります。groongaで提供しているプロトコルはGQTPとHTTPの2つがあります。 - -HTTPプロトコルを選択した場合には、groongaもしくはgroonga-httpdという実装の違いによる選択肢があります。 - -それではそれらプロトコルやサーバー実装についてどのように選んだら良いのでしょうか。 - -そういったサーバー用途で使うときに気になるポイントについて、 "比較表":/ja/docs/server/http/comparison.html を用意しました。検討するときの参考にしてください。 - -h3. @groonga-httpd@ で @http_rewrite_module@ のサポート - - �� groonga-httpd@ の機能強化のポイントとしてPCREの自動検出があります。 - -これまで、 @groonga-httpd@ では、PCREをリンクしていなかったため明示的に @http_rewrite_module@ を無効にしていました。 - -今回のリリースではPCREの自動検出をサポートし、なおかつ @http_rewrite_module@ が使えるようにPCREを必須としました。 - -以前紹介した、 @groonga-httpd@ の複数データベースのサポートやベースパスのカスタマイズと組合せることでより柔軟にgroongaサーバーの運用を行えるようになります。 - -h3. さいごに - -2.0.5からの詳細な変更点は "2.0.6リリース 2012/08/29":/ja/docs/news.html#release-2-0-6 を確認してください。 - -それでは、groongaでガンガン検索してください! Added: ja/_posts/2012-09-29-release.md (+144 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-09-29-release.md 2016-02-07 10:50:24 +0900 (a2382aa) @@ -0,0 +1,144 @@ +--- +layout: post.ja +title: groonga 2.0.7リリース +description: groonga 2.0.7がリリースされました! +--- +h2. groonga 2.0.7リリース + +今日は肉の日ですね。 + +[groonga 2.0.7](/ja/docs/news.html#release-2-0-7) がリリースされました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +今回のリリースの主なトピックは3つあります。 + +- `groonga-httpd` でのPOSTによる `load` コマンドのサポート +- サーバーパッケージ構成と使用ポートの見直し +- `min` / `max` 関数のサポート + +### `groonga-httpd` でのPOSTによる `load` コマンドのサポート + +今回のリリースでは、POSTによる `load` コマンドの実行をサポートしました。 + +実際の例を以下に示します。 + +サンプルで使うスキーマ定義: + + table_create --name Site --flags TABLE_HASH_KEY --key_type ShortText + column_create --table Site --name title --type ShortText + +http://localhost:10041/にアクセスするとブラウザベースの管理ツールを使って上記スキーマ定義のSiteテーブルおよびtitleカラムを簡単に作成することができます。 + +テーブルとカラムを作り終えたら、次にSiteテーブルへと登録しておきたいレコードをJSON形式で用意します。(例としてファイル名はpostbody.txtとします。) + + [ + {"_key": "site1", "title":"Web site1 title"} + ] + +登録データが準備できたので、curlコマンドを使ってPOSTリクエストをサーバーへと投げてみます。 + + % curl -X POST 'http://localhost:10041/d/load?table=Site' --verbose -H 'Content-Type: application/json' -d****@postb***** + +実行するとpostbody.txtのデータが `load` コマンドにより登録できます。 + +### サーバーパッケージ構成と使用ポートの見直し + +今回のリリースではサーバーパッケージ構成と使用ポートの見直しを行いました。 + +従来サーバー用途では以下のHTTPサーバーパッケージのみ提供していました。 + +- groonga-server (HTTPサーバー) +- groonga-httpd (HTTPサーバー) + +GQTPプロトコルで使うには不便ですし、デフォルトで使用するポートもGQTPとHTTPで使用ポートがどちらも10041番ポートと衝突していました。 + +そこで、groonga-serverパッケージを分割し、プロトコルごとで異なるパッケージを提供するようにしました。 +使用するポート番号についても別のポート番号を割りあてるようにしました。(HTTPは従来通り10041番ポート。GQTPを10043番ポートに割り当て変更。) + +- groonga-server-http (HTTPサーバー 10041ポート) +- groonga-server-gqtp (GQTPサーバー 10043ポート) + +<!-- --> + + 注: groonga-server-httpパッケージとgroonga-httpdパッケージはいずれかのみインストールすることができます。 + +### `min` / `max` 関数のサポート + +今回のリリースではminおよびmax関数をサポートしました。 + +- min関数は与えられた引数のうち最小のものを返し、 +- max関数は与えられた引数のうち最大のものを返します。 + +これら関数のサポートにより、検索結果が条件に合致する度合いを示すスコアが極端に高かったり、もしくは低くなってしまった場合に検索結果を調整することができるようになります。 + +具体例をmin関数を使ったサンプルで示します。 + +サンプルで使うスキーマ定義: + + table_create --name Site --flags TABLE_HASH_KEY --key_type ShortText + column_create --table Site --name title --type ShortText + column_create --table Site --name point --type Int8 + + table_create --name Terms --flags TABLE_PAT_KEY|KEY_NORMALIZE --key_type ShortText --default_tokenizer TokenBigram + column_create --table Terms --name blog_title --flags COLUMN_INDEX|WITH_POSITION --type Site --source title + +サンプルで使うためのデータ登録: + + load --table Site + [ + {"_key":"http://example.org/","title":"This is test record 1!","point":1}, + {"_key":"http://example.net/","title":"test record 2.","point":2}, + {"_key":"http://example.com/","title":"test test record three.","point":3}, + {"_key":"http://example.net/afr","title":"test record four.", "point":4}, + {"_key":"http://example.org/aba","title":"test test test record five.","point":5}, + {"_key":"http://example.com/rab","title":"test test test test record six.","point":0}, + {"_key":"http://example.net/atv","title":"test test test record seven.","point":7}, + {"_key":"http://example.org/gat","title":"test test record eight.","point":8}, + {"_key":"http://example.com/vdw","title":"test test record nine.","point":9}, + ] + +例えば、指定した語句(test)をカラムtitleに含むテキストの全文検索を行うことを考えます。個々のデータには重要度(point)があらかじめ与えられているとします。 + +単純に指定した語句(test)にマッチするものが多いデータをソート(スコアが同じなら重要度で降順)して取得するならば以下のクエリで取得できます。 + + % select --table Site --query title:@test --output_columns _id,_score,title,point --sortby -_score,-point + + ["_id","UInt32"],["_score","Int32"],["title","ShortText"],["point","Int8"] + [6,4,"test test test test record six.",0], + [7,3,"test test test record seven.",7], + [5,3,"test test test record five.",5], + [9,2,"test test record nine.",9], + [8,2,"test test record eight.",8], + [3,2,"test test record three.",3], + [4,1,"test record four.",4], + [2,1,"test record 2.",2], + [1,1,"This is test record 1!",1] + +ただし、これだと重要度が低い"test test test test record +six."がトップに来ます。マッチするのは重視したいけれども、それほど高いスコアを与えると望ましい結果にならないときに調整するのに使えるのが、min関数です。 + +groongaではスコアを_scoreカラムに保持しています。そこで、min関数を使って極端に高いスコアにならないようにします。 + + % select --table Site --query title:@test --output_columns _id,_score,title,point + --scorer '_score = min(_score, 3) --sortby -_score,-point + + ["_id","UInt32"],["_score","Int32"],["title","ShortText"],["point","Int8"] + [7,3,"test test test record seven.",7], + [5,3,"test test test record five.",5], + [6,3,"test test test test record six.",0], + [9,2,"test test record nine.",9], + [8,2,"test test record eight.",8], + [3,2,"test test record three.",3], + [4,1,"test record four.",4], + [2,1,"test record 2.",2],[1,1,"This is test record 1!",1] + +すると、マッチしているものを重視しつつ、設定済みの重要度も考慮した結果を得ることができるようになります。 + +### さいごに + +2.0.6からの詳細な変更点は [2.0.7リリース +2012/09/29](/ja/docs/news.html#release-2-0-7) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2012-09-29-release.textile (+0 -155) 100644 =================================================================== --- ja/_posts/2012-09-29-release.textile 2016-02-07 10:35:40 +0900 (d1b76fb) +++ /dev/null @@ -1,155 +0,0 @@ ---- -layout: post.ja -title: groonga 2.0.7リリース -description: groonga 2.0.7がリリースされました! ---- -h2. groonga 2.0.7リリース - -今日は肉の日ですね。 - -"groonga 2.0.7":/ja/docs/news.html#release-2-0-7 がリリースされました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -今回のリリースの主なトピックは3つあります。 - -* @groonga-httpd@ でのPOSTによる @load@ コマンドのサポート -* サーバーパッケージ構成と使用ポートの見直し -* @min@ / @max@ 関数のサポート - -h3. @groonga-httpd@ でのPOSTによる @load@ コマンドのサポート - -今回のリリースでは、POSTによる @load@ コマンドの実行をサポートしました。 - -実際の例を以下に示します。 - -サンプルで使うスキーマ定義: - -<pre> - table_create --name Site --flags TABLE_HASH_KEY --key_type ShortText - column_create --table Site --name title --type ShortText -</pre> - -http://localhost:10041/にアクセスするとブラウザベースの管理ツールを使って上記スキーマ定義のSiteテーブルおよびtitleカラムを簡単に作成することができます。 - -テーブルとカラムを作り終えたら、次にSiteテーブルへと登録しておきたいレコードをJSON形式で用意します。(例としてファイル名はpostbody.txtとします。) - -<pre> - [ - {"_key": "site1", "title":"Web site1 title"} - ] -</pre> - -登録データが準備できたので、curlコマンドを使ってPOSTリクエストをサーバーへと投げてみます。 - -<pre> - % curl -X POST 'http://localhost:10041/d/load?table=Site' --verbose -H 'Content-Type: application/json' -d****@postb***** -</pre> - -実行するとpostbody.txtのデータが @load@ コマンドにより登録できます。 - -h3. サーバーパッケージ構成と使用ポートの見直し - -今回のリリースではサーバーパッケージ構成と使用ポートの見直しを行いました。 - -従来サーバー用途では以下のHTTPサーバーパッケージのみ提供していました。 - -* groonga-server (HTTPサーバー) -* groonga-httpd (HTTPサーバー) - -GQTPプロトコルで使うには不便ですし、デフォルトで使用するポートもGQTPとHTTPで使用ポートがどちらも10041番ポートと衝突していました。 - -そこで、groonga-serverパッケージを分割し、プロトコルごとで異なるパッケージを提供するようにしました。 -使用するポート番号についても別のポート番号を割りあてるようにしました。(HTTPは従来通り10041番ポート。GQTPを10043番ポートに割り当て変更。) - -* groonga-server-http (HTTPサーバー 10041ポート) -* groonga-server-gqtp (GQTPサーバー 10043ポート) - -<pre> -注: groonga-server-httpパッケージとgroonga-httpdパッケージはいずれかのみインストールすることができます。 -</pre> - -h3. @min@ / @max@ 関数のサポート - -今回のリリースではminおよびmax関数をサポートしました。 - -* min関数は与えられた引数のうち最小のものを返し、 -* max関数は与えられた引数のうち最大のものを返します。 - -これら関数のサポートにより、検索結果が条件に合致する度合いを示すスコアが極端に高かったり、もしくは低くなってしまった場合に検索結果を調整することができるようになります。 - -具体例をmin関数を使ったサンプルで示します。 - -サンプルで使うスキーマ定義: - -<pre> - table_create --name Site --flags TABLE_HASH_KEY --key_type ShortText - column_create --table Site --name title --type ShortText - column_create --table Site --name point --type Int8 - - table_create --name Terms --flags TABLE_PAT_KEY|KEY_NORMALIZE --key_type ShortText --default_tokenizer TokenBigram - column_create --table Terms --name blog_title --flags COLUMN_INDEX|WITH_POSITION --type Site --source title -</pre> - -サンプルで使うためのデータ登録: - -<pre> - load --table Site - [ - {"_key":"http://example.org/","title":"This is test record 1!","point":1}, - {"_key":"http://example.net/","title":"test record 2.","point":2}, - {"_key":"http://example.com/","title":"test test record three.","point":3}, - {"_key":"http://example.net/afr","title":"test record four.", "point":4}, - {"_key":"http://example.org/aba","title":"test test test record five.","point":5}, - {"_key":"http://example.com/rab","title":"test test test test record six.","point":0}, - {"_key":"http://example.net/atv","title":"test test test record seven.","point":7}, - {"_key":"http://example.org/gat","title":"test test record eight.","point":8}, - {"_key":"http://example.com/vdw","title":"test test record nine.","point":9}, - ] -</pre> - -例えば、指定した語句(test)をカラムtitleに含むテキストの全文検索を行うことを考えます。個々のデータには重要度(point)があらかじめ与えられているとします。 - -単純に指定した語句(test)にマッチするものが多いデータをソート(スコアが同じなら重要度で降順)して取得するならば以下のクエリで取得できます。 - -<pre> - % select --table Site --query title:@test --output_columns _id,_score,title,point --sortby -_score,-point - - ["_id","UInt32"],["_score","Int32"],["title","ShortText"],["point","Int8"] - [6,4,"test test test test record six.",0], - [7,3,"test test test record seven.",7], - [5,3,"test test test record five.",5], - [9,2,"test test record nine.",9], - [8,2,"test test record eight.",8], - [3,2,"test test record three.",3], - [4,1,"test record four.",4], - [2,1,"test record 2.",2], - [1,1,"This is test record 1!",1] -</pre> - -ただし、これだと重要度が低い"test test test test record six."がトップに来ます。マッチするのは重視したいけれども、それほど高いスコアを与えると望ましい結果にならないときに調整するのに使えるのが、min関数です。 - -groongaではスコアを_scoreカラムに保持しています。そこで、min関数を使って極端に高いスコアにならないようにします。 - -<pre> - % select --table Site --query title:@test --output_columns _id,_score,title,point \ - --scorer '_score = min(_score, 3) --sortby -_score,-point - - ["_id","UInt32"],["_score","Int32"],["title","ShortText"],["point","Int8"] - [7,3,"test test test record seven.",7], - [5,3,"test test test record five.",5], - [6,3,"test test test test record six.",0], - [9,2,"test test record nine.",9], - [8,2,"test test record eight.",8], - [3,2,"test test record three.",3], - [4,1,"test record four.",4], - [2,1,"test record 2.",2],[1,1,"This is test record 1!",1] -</pre> - -すると、マッチしているものを重視しつつ、設定済みの重要度も考慮した結果を得ることができるようになります。 - -h3. さいごに - -2.0.6からの詳細な変更点は "2.0.7リリース 2012/09/29":/ja/docs/news.html#release-2-0-7 を確認してください。 - -それでは、groongaでガンガン検索してください! Renamed: ja/_posts/2012-10-10-groonga-night-3.md (+40 -21) 55% =================================================================== --- ja/_posts/2012-10-10-groonga-night-3.textile 2016-02-07 10:35:40 +0900 (c02a134) +++ ja/_posts/2012-10-10-groonga-night-3.md 2016-02-07 10:50:24 +0900 (40e21ae) @@ -1,16 +1,21 @@ --- layout: post.ja -title: groonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」開催のお知らせ -description: 今年もgroonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」を開催します! +title: groonga勉強会「全文検索エンジンgroongaを囲む夕べ +3」開催のお知らせ +description: 今年もgroonga勉強会「全文検索エンジンgroongaを囲む夕べ +3」を開催します! --- h2. groonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」開催のお知らせ -今年も「いい肉の日」である11/29に、「 "全文検索エンジンgroongaを囲む夕べ 3":http://atnd.org/events/33070 」と題して第3回目のgroonga勉強会を開催します! -これまでに、2010年に "第1回目":http://atnd.org/events/9234 、2011年に "第2回目":http://atnd.org/events/20446 のgroonga勉強会を開催しました。 +今年も「いい肉の日」である11/29に、「 [全文検索エンジンgroongaを囲む夕べ +3](http://atnd.org/events/33070) +」と題して第3回目のgroonga勉強会を開催します! +これまでに、2010年に [第1回目](http://atnd.org/events/9234) 、2011年に +[第2回目](http://atnd.org/events/20446) のgroonga勉強会を開催しました。 -"第1回目、第2回目での講演資料":http://groonga.org/ja/publication/ +[第1回目、第2回目での講演資料](http://groonga.org/ja/publication/) -h3. 今回のコンセプト +### 今回のコンセプト 前回までの勉強会ではgroongaの紹介がメインでしたが、今回の勉強会は「ユーザーさんがどのようにgroongaを使っているか」をメインとしています。 @@ -20,40 +25,54 @@ h3. 今回のコンセプト ユーザーさんからの発表は公募します。応募方法や、勉強会への参加方法は後述します。 -h3. 会場 +### 会場 -会場は前回と同じ "株式会社VOYAGE GROUP":http://voyagegroup.com/company/access/ さんにご提供いただけることになりました。ありがとうございます! +会場は前回と同じ [株式会社VOYAGE +GROUP](http://voyagegroup.com/company/access/) +さんにご提供いただけることになりました。ありがとうございます! -h3. 日時 +### 日時 2012/11/29 (木)19:00-21:00 -※21:00から会場の "株式会社VOYAGE GROUP":http://voyagegroup.com/company/access/ さんの社内バーAJITOで懇親会を予定しています。 +※21:00から会場の [株式会社VOYAGE +GROUP](http://voyagegroup.com/company/access/) +さんの社内バーAJITOで懇親会を予定しています。 -h3. 勉強会の概要 +### 勉強会の概要 実際にgroongaを使っているユーザーさんが、どのようにgroongaを使っているかについて発表します。(発表してくださるユーザーさんを後述のとおり公募します) -勉強会の最初には、groongaと "MySQLストレージエンジンmroonga":http://mroonga.org/ja/ について開発者から簡単に紹介します。内容は前回からの改良点の紹介や、これから予定している改良についてです。 -詳しいタイムスケジュールは発表人数により決定します( "ATND":http://atnd.org/events/33070 に案を載せています)が、出来る限り多くのユーザーさんに発表してもらえるように調整します。 +勉強会の最初には、groongaと +[MySQLストレージエンジンmroonga](http://mroonga.org/ja/) +について開発者から簡単に紹介します。内容は前回からの改良点の紹介や、これから予定している改良についてです。 +詳しいタイムスケジュールは発表人数により決定します( +[ATND](http://atnd.org/events/33070) +に案を載せています)が、出来る限り多くのユーザーさんに発表してもらえるように調整します。 -h3. 募集していること +### 募集していること groonga勉強会の開催にあたり募集していることが3つあります! -h4. ユーザーさんからの発表希望者を募集します! +#### ユーザーさんからの発表希望者を募集します! groongaを実際に使っているユーザーさんで、今回の勉強会で発表してくださる方を募集しています。 募集テーマは、「普段groongaをどのように使っているか」です。当日はスライドなどの講演資料を使って発表していただきます。発表時間は15分で、その後に10分のQ&Aを予定しています。 -発表申し込みは先着順です。発表を申し込んでくださる方は、twitterで "@groonga":https://twitter.com/groonga/ 宛にツイートしてください。詳しい応募方法については "ATND":http://atnd.org/events/33070 をご覧ください。 +発表申し込みは先着順です。発表を申し込んでくださる方は、twitterで +[`groonga":https://twitter.com/groonga/ 宛にツイートしてください。詳しい応募方法については "ATND":http://atnd.org/events/33070 をご覧ください。 申し込みの締め切りは10/28です。 -発表に関しての質問は、 "@groonga":https://twitter.com/groonga/ 宛にツイートしてください。 +発表に関しての質問は、 "`groonga](https://twitter.com/groonga/) +宛にツイートしてください。 -h4. 参加希望者を募集します! +#### 参加希望者を募集します! -勉強会に参加してくださる方は、 "ATND":http://atnd.org/events/33070 から参加登録をしてください。 +勉強会に参加してくださる方は、 [ATND](http://atnd.org/events/33070) +から参加登録をしてください。 すでにgroongaを使っている方以外にも、groongaに興味はあるけどまだ使ってない…という方も大歓迎です! -h4. Ustreamで録画してくださる方を募集します! +#### Ustreamで録画してくださる方を募集します! 前回と同じように勉強会の内容をUstreamで配信します。そのほか、受付など勉強会を手伝ってくださる方も募集しています。 -もし勉強会にご協力してくださる方は、 "@groonga":https://twitter.com/groonga/ 宛にツイートするか、 "ATND":http://atnd.org/events/33070 の告知ページ下部からコメントにて応募してください。 +もし勉強会にご協力してくださる方は、 +[@groonga](https://twitter.com/groonga/) 宛にツイートするか、 +[ATND](http://atnd.org/events/33070) +の告知ページ下部からコメントにて応募してください。 Added: ja/_posts/2012-10-29-release.md (+177 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-10-29-release.md 2016-02-07 10:50:24 +0900 (de4cfb1) @@ -0,0 +1,177 @@ +--- +layout: post.ja +title: groonga 2.0.8リリース +description: groonga 2.0.8をリリースしました! +--- + +今日は肉の日ですね。 + +リリースアナウンスの詳細の前にお知らせが1つあります。 + +すでに [groonga勉強会「全文検索エンジンgroongaを囲む夕べ +3」開催のお知らせ]({%) post_url 2012-10-10-groonga-night-3 %} +というエントリを書いていますが、来月groonga勉強会を開催します。 + +開催告知から更新した内容(発表者が追加されたり、発表者の応募締切が延びました!)もありますので、ここで再度告知します。 + +全文検索エンジンgroongaを囲む夕べ 3開催のお知らせ +------------------------------------------------- + +今年も [groonga勉強会「全文検索エンジンgroongaを囲む夕べ +3」を開催](http://atnd.org/events/33070) します。 + +- 会場: + 株式会社VOYAGE GROUP 8Fセミナールーム [Google + Mapsで表示](https://www.google.co.jp/maps?q=35.6553195,139.6937795%28%E6%9D%B1%E4%BA%AC%E9%83%BD%E6%B8%8B%E8%B0%B7%E5%8C%BA%E7%A5%9E%E6%B3%89%E7%94%BA8-16%29&z=17) +- 日時: + 2012/11/29 (木) 19:00-21:00 (18:30開場、懇親会は21:00開始) +- 申し込み方法: + [ATNDのイベントページ](http://atnd.org/events/33070) + から申し込んでください。先着150名で、まだ人数に余裕があります。 +- 懇親会: + 参加・不参加について、ATNDでの参加登録の際のコメントか + [ATNDのイベントページ](http://atnd.org/events/33070) + 下部のコメント欄にてご連絡ください + +今回のgroonga勉強会では、ユーザさんがgroongaをどんな風に使っているか発表してもらうことを重視しています。 + +groongaはユーザーさんに助けられながら開発を続けています。これまで、groongaを使ってくれるユーザーさんが増えるにつれ、フィードバックなどの協力もより多く得られるようになりました。 + +そこで、もっとユーザーさんの意見を参考にしてgroongaを改善するため、ユーザーさんがどのようにgroongaを使っているかを発表していただいて、ユーザーさんや開発者がみんなで話す会にしたいと思っています。 + +groongaについてユーザーさんが改善してほしい点や便利だなーと思う点を、開発者含めgroongaを使っている人たちみんなで話をして、groongaがよりいい方向に進むための足がかりにしたいと考えています。 + +また、ユーザーさんや、groongaに興味があるけどまだ使ったことのない人がお互いにgroongaについて話すことで、どのようにgroongaを使うのが自分にとって適切かを見つけられると考えています。 + +すでに4名の方から以下の内容で発表者として応募いただいています。 + +- こしばさん: + web広告系システムでgroongaをどう使っているかの発表をしてくださいます! +- 和田さん: タイトル「nanapiにおけるmroonga活用事例」 + + nanapiというサイトでgroongaやmroongaをどう使っているかの発表をしてくださいます! +- てみたさん: + + ニコ番というサービスでrroongaをどう使っているかの発表をしてくださいます! +- ongaeshiさん: + + Milkodeというソフトウェアでrroongaをどう使っているかの発表をしてくださいます! + +発表していただける方をまだまだ募集しています。応募の締切は11/04(日)23:59となっています。発表者になると、懇親会参加費用が無料になる特典があります。 + +また、受付を手伝ってくださる方も募集しています。(お手伝いいただける方ももちろん懇親会参加費用が無料です。) + +勉強会、懇親会等の詳細は以下の +[ATNDのイベントページ](http://atnd.org/events/33070) +を随時更新していますので、そちらをご確認ください。 + +[Twitterのgroongaアカウント](https://twitter.com/groonga) +でも随時ツイートしています。 + +勉強会のお知らせは以上です。 + +groonga 2.0.8リリース +--------------------- + +[groonga 2.0.8](/ja/docs/news.html#release-2-0-8) をリリースしました! + +今回のリリースの主なトピックは2つあります。 + +- クエリ展開のプラグインによるカスタマイズのサポート +- Ubuntu 12.10 (Quantal Quetzal)のサポート + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +### クエリ展開のプラグインによるカスタマイズのサポート + +今回のリリースでは、実験的にクエリ展開をプラグインによりカスタマイズすることができるようになりました。 + +例えば同義語がいくつかあったときに、とある単語で検索したら、その同義語でも一緒に検索してくれるとユーザーにとってより望ましい結果が得られることがあります。同義語に限らず、関連したキーワードでも似たようなことが言えます。 + +具体的にはgroonga,rroonga,mroongaは互いに関連したキーワードですが、これを実現するには +`(groonga OR rroonga OR mroonga)` というクエリを書く必要があります。 + +単純なクエリであれば問題になりませんが、条件が複雑になってくるとメンテナンスしにくくなってしまいます。 + +groongaではそういった検索を簡単に行えるようにクエリ展開を既にサポートしています。 + +具体例で説明します。以下は説明のためのスキーマ定義とサンプルデータです。 + + table_create Memos TABLE_NO_KEY + column_create Memos content COLUMN_SCALAR ShortText + table_create Lexicon TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram + column_create Lexicon diary_content COLUMN_INDEX|WITH_POSITION Memos content + table_create Synonyms TABLE_PAT_KEY ShortText + column_create Synonyms words COLUMN_SCALAR ShortText + + load --table Memos + [ + ["content"], + ["Start groonga!"], + ["Start mroonga!"], + ["Start rroonga!"], + ["Start Ruby!"], + ["Learning Ruby and groonga..."], + ] + + load --table Synonyms + [ + ["_key", "words"], + ["groonga", "(groonga OR rroonga OR mroonga)"] + ] + +Synonymsテーブルにあらかじめ登録しておいたgroongaというキーワードを用いて関連キーワードをまとめてクエリ展開するには以下のように書きます。 +Memosテーブルのcontentカラムに登録してあるテキストに対してgroongaというキーワードで検索しようとしたときにrroongaやmroongaでもまとめて検索するクエリ展開を行う例です。 + + select --table Memos --query_expansion Synonyms.words --match_columns content --query groonga + + [[0,1350898793.34538,0.00174403190612793], + [ + [[4], + [ + ["_id","UInt32"],["content","ShortText"]], + [1,"Start groonga!"], + [5,"Learning Ruby and groonga..."], + [3,"Start rroonga!"], + [2,"Start mroonga!"] + ] + ] + ] + +groongaだけでなくrroongaやmroongaも検索結果として取得できることがわかります。 + +今回のプラグインによるカスタマイズのサポートでは、同義語のためにテーブルを作らずにタブ区切りのテキストファイル(synonyms.tsv)を指定することができるようになりました。 + + key[TAB]synonym1[TAB]synonym2[TAB]... + +例えば、groongaをクエリで指定したら、rroongaやmroongaもまとめて検索できるようにするには以下のようなテキストファイルを記述します。 + + groonga[TAB]groonga[TAB]rroonga[TAB]mroonga + +実際に `QueryExpanderTSV` を使うにはクエリを以下のように変更します。 + + select --table Memos --query_expansion QueryExpanderTSV --match_columns content --query groonga + +すると `--query groonga` +とすると実際に実行されるクエリとしては以下と同等になります。 + + --query "((groonga) OR (rroonga) OR (mroonga))" + +デフォルトでは `/etc/groonga/synonyms.tsv` +に雛形となるテキストファイルをインストールします。 +任意の場所に変更したい場合には、 `GRN_QUERY_EXPANDER_TSV_SYNONYMS_FILE` +環境変数で別のファイルを指定することもできます。 + +### Ubuntu 12.10 (Quantal Quetzal)のサポート + +Ubuntu 12.10 Quantal Quetzalが10月18日にリリースされました。 + +今回のリリースでは早速Ubuntu 12.10向けのパッケージの提供を開始しました。 + +### さいごに + +2.0.7からの詳細な変更点は [2.0.8リリース +2012/10/29](/ja/docs/news.html#release-2-0-8) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2012-10-29-release.textile (+0 -169) 100644 =================================================================== --- ja/_posts/2012-10-29-release.textile 2016-02-07 10:35:40 +0900 (f29d7ad) +++ /dev/null @@ -1,169 +0,0 @@ ---- -layout: post.ja -title: groonga 2.0.8リリース -description: groonga 2.0.8をリリースしました! ---- - -今日は肉の日ですね。 - -リリースアナウンスの詳細の前にお知らせが1つあります。 - -すでに "groonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」開催のお知らせ":{% post_url 2012-10-10-groonga-night-3 %} というエントリを書いていますが、来月groonga勉強会を開催します。 - -開催告知から更新した内容(発表者が追加されたり、発表者の応募締切が延びました!)もありますので、ここで再度告知します。 - -h2. 全文検索エンジンgroongaを囲む夕べ 3開催のお知らせ - -今年も "groonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」を開催":http://atnd.org/events/33070 します。 - - -* 会場: - 株式会社VOYAGE GROUP 8Fセミナールーム "Google Mapsで表示":https://www.google.co.jp/maps?q=35.6553195,139.6937795%28%E6%9D%B1%E4%BA%AC%E9%83%BD%E6%B8%8B%E8%B0%B7%E5%8C%BA%E7%A5%9E%E6%B3%89%E7%94%BA8-16%29&z=17 -* 日時: - 2012/11/29 (木) 19:00-21:00 (18:30開場、懇親会は21:00開始) -* 申し込み方法: - "ATNDのイベントページ":http://atnd.org/events/33070 から申し込んでください。先着150名で、まだ人数に余裕があります。 -* 懇親会: - 参加・不参加について、ATNDでの参加登録の際のコメントか "ATNDのイベントページ":http://atnd.org/events/33070 下部のコメント欄にてご連絡ください - -今回のgroonga勉強会では、ユーザさんがgroongaをどんな風に使っているか発表してもらうことを重視しています。 - -groongaはユーザーさんに助けられながら開発を続けています。これまで、groongaを使ってくれるユーザーさんが増えるにつれ、フィードバックなどの協力もより多く得られるようになりました。 - -そこで、もっとユーザーさんの意見を参考にしてgroongaを改善するため、ユーザーさんがどのようにgroongaを使っているかを発表していただいて、ユーザーさんや開発者がみんなで話す会にしたいと思っています。 - -groongaについてユーザーさんが改善してほしい点や便利だなーと思う点を、開発者含めgroongaを使っている人たちみんなで話をして、groongaがよりいい方向に進むための足がかりにしたいと考えています。 - -また、ユーザーさんや、groongaに興味があるけどまだ使ったことのない人がお互いにgroongaについて話すことで、どのようにgroongaを使うのが自分にとって適切かを見つけられると考えています。 - -すでに4名の方から以下の内容で発表者として応募いただいています。 - -* こしばさん: - web広告系システムでgroongaをどう使っているかの発表をしてくださいます! -* 和田さん: タイトル「nanapiにおけるmroonga活用事例」 - nanapiというサイトでgroongaやmroongaをどう使っているかの発表をしてくださいます! -* てみたさん: - ニコ番というサービスでrroongaをどう使っているかの発表をしてくださいます! -* ongaeshiさん: - Milkodeというソフトウェアでrroongaをどう使っているかの発表をしてくださいます! - -発表していただける方をまだまだ募集しています。応募の締切は11/04(日)23:59となっています。発表者になると、懇親会参加費用が無料になる特典があります。 - -また、受付を手伝ってくださる方も募集しています。(お手伝いいただける方ももちろん懇親会参加費用が無料です。) - -勉強会、懇親会等の詳細は以下の "ATNDのイベントページ":http://atnd.org/events/33070 を随時更新していますので、そちらをご確認ください。 - -"Twitterのgroongaアカウント":https://twitter.com/groonga でも随時ツイートしています。 - -勉強会のお知らせは以上です。 - -h2. groonga 2.0.8リリース - -"groonga 2.0.8":/ja/docs/news.html#release-2-0-8 をリリースしました! - -今回のリリースの主なトピックは2つあります。 - -* クエリ展開のプラグインによるカスタマイズのサポート -* Ubuntu 12.10 (Quantal Quetzal)のサポート - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -h3. クエリ展開のプラグインによるカスタマイズのサポート - -今回のリリースでは、実験的にクエリ展開をプラグインによりカスタマイズすることができるようになりました。 - -例えば同義語がいくつかあったときに、とある単語で検索したら、その同義語でも一緒に検索してくれるとユーザーにとってより望ましい結果が得られることがあります。同義語に限らず、関連したキーワードでも似たようなことが言えます。 - -具体的にはgroonga,rroonga,mroongaは互いに関連したキーワードですが、これを実現するには @(groonga OR rroonga OR mroonga)@ というクエリを書く必要があります。 - -単純なクエリであれば問題になりませんが、条件が複雑になってくるとメンテナンスしにくくなってしまいます。 - -groongaではそういった検索を簡単に行えるようにクエリ展開を既にサポートしています。 - -具体例で説明します。以下は説明のためのスキーマ定義とサンプルデータです。 - -<pre> - table_create Memos TABLE_NO_KEY - column_create Memos content COLUMN_SCALAR ShortText - table_create Lexicon TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram - column_create Lexicon diary_content COLUMN_INDEX|WITH_POSITION Memos content - table_create Synonyms TABLE_PAT_KEY ShortText - column_create Synonyms words COLUMN_SCALAR ShortText - - load --table Memos - [ - ["content"], - ["Start groonga!"], - ["Start mroonga!"], - ["Start rroonga!"], - ["Start Ruby!"], - ["Learning Ruby and groonga..."], - ] - - load --table Synonyms - [ - ["_key", "words"], - ["groonga", "(groonga OR rroonga OR mroonga)"] - ] -</pre> - -Synonymsテーブルにあらかじめ登録しておいたgroongaというキーワードを用いて関連キーワードをまとめてクエリ展開するには以下のように書きます。 -Memosテーブルのcontentカラムに登録してあるテキストに対してgroongaというキーワードで検索しようとしたときにrroongaやmroongaでもまとめて検索するクエリ展開を行う例です。 - -<pre> - select --table Memos --query_expansion Synonyms.words --match_columns content --query groonga - - [[0,1350898793.34538,0.00174403190612793], - [ - [[4], - [ - ["_id","UInt32"],["content","ShortText"]], - [1,"Start groonga!"], - [5,"Learning Ruby and groonga..."], - [3,"Start rroonga!"], - [2,"Start mroonga!"] - ] - ] - ] -</pre> - -groongaだけでなくrroongaやmroongaも検索結果として取得できることがわかります。 - -今回のプラグインによるカスタマイズのサポートでは、同義語のためにテーブルを作らずにタブ区切りのテキストファイル(synonyms.tsv)を指定することができるようになりました。 - -<pre> - key[TAB]synonym1[TAB]synonym2[TAB]... -</pre> - -例えば、groongaをクエリで指定したら、rroongaやmroongaもまとめて検索できるようにするには以下のようなテキストファイルを記述します。 - -<pre> - groonga[TAB]groonga[TAB]rroonga[TAB]mroonga -</pre> - -実際に @QueryExpanderTSV@ を使うにはクエリを以下のように変更します。 - -<pre> - select --table Memos --query_expansion QueryExpanderTSV --match_columns content --query groonga -</pre> - -すると @--query groonga@ とすると実際に実行されるクエリとしては以下と同等になります。 - -<pre> - --query "((groonga) OR (rroonga) OR (mroonga))" -</pre> - -デフォルトでは @/etc/groonga/synonyms.tsv@ に雛形となるテキストファイルをインストールします。 -任意の場所に変更したい場合には、 @GRN_QUERY_EXPANDER_TSV_SYNONYMS_FILE@ 環境変数で別のファイルを指定することもできます。 - -h3. Ubuntu 12.10 (Quantal Quetzal)のサポート - -Ubuntu 12.10 Quantal Quetzalが10月18日にリリースされました。 - -今回のリリースでは早速Ubuntu 12.10向けのパッケージの提供を開始しました。 - -h3. さいごに - -2.0.7からの詳細な変更点は "2.0.8リリース 2012/10/29":/ja/docs/news.html#release-2-0-8 を確認してください。 - -それでは、groongaでガンガン検索してください! Added: ja/_posts/2012-11-29-release.md (+338 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-11-29-release.md 2016-02-07 10:50:24 +0900 (745982d) @@ -0,0 +1,338 @@ +--- +layout: post.ja +title: groonga 2.0.9リリース +description: groonga 2.0.9をリリースしました! +--- + +今日は [groonga勉強会「全文検索エンジンgroongaを囲む夕べ +3」](http://atnd.org/events/33070) の当日ですね。 + +groonga 2.0.9リリース +--------------------- + +[groonga 2.0.9](/ja/docs/news.html#release-2-0-9) をリリースしました! + +今回のリリースの主なトピックは4つあります。 + +- snippet_html()関数の実験的なサポート +- インデックスにより関連付けられたテーブル間のネストしたインデックス検索のサポート +- インデックスを利用した高速な指定範囲検索のサポート +- geo_distance()関数で矩形近似により境界をまたぐ二点間の距離計算をサポート + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +### snippet_html()関数の実験的なサポート + +今回のリリースでは、実験的ではありますが、キーワードとその周辺のテキストを抽出するためのsnippet_html()関数をサポートしました。 +あくまで実験的なので今後予告なく変更する可能性があります。 + +snippet_html()関数は以下のような構文で使用します。 + + snippet_html(column名) + +どんな風に使えるかを具体例で説明します。以下は説明のためのスキーマ定義とサンプルデータです。 + + table_create Documents TABLE_NO_KEY + column_create Documents content COLUMN_SCALAR Text + table_create Terms TABLE_PAT_KEY|KEY_NORMALIZE ShortText --default_tokenizer TokenBigram + column_create Terms documents_content_index COLUMN_INDEX|WITH_POSITION Documents content + + load --table Documents + [ + ["content"], + ["Groonga is a fast and accurate full text search engine based on inverted index."], + ["Groonga is also a column-oriented database management system (DBMS)."], + ["Mroonga was called groonga storage engine."] + ] + +Documentsテーブルに登録したデータからキーワードgroongaを含むテキストを抽出するには以下のクエリを実行します。 + + select Documents --output_columns "snippet_html(content)" --command_version 2 --match_columns content --query "groonga" + +上記クエリでは検索したいキーワードgroongaを `--query` +に指定し、検索対象のカラムには `--match_columns content` +としてDocumentテーブルのcontentカラムを指定します。 + +このとき、クエリにコマンドバージョン(`--command_version 2`)を指定する必要があります。これは、 +`--ouput_columns` +で関数を呼びだすことができるようになったのは2.0.9からだからです。 + +結果は以下のようになり、指定したキーワードが `<span>` +タグで囲まれ、キーワード周辺のテキストとして抽出できていることがわかります。 + +検索結果のキーワードをハイライト表示したいときに便利な機能です。 + + [ + [0,1353893385.5454,0.000486850738525391], + [ + [ + [3], + [["snippet_html","null"]], + [["Groonga is a fast and accurate full text search engine based on inverted index."]], + [["Groonga is also a column-oriented database management system (DBMS)."]], + [["Mroonga was called groonga storage engine."]] + ] + ] + ] + +関数の詳細については +[snippet_html()](http://groonga.org/ja/docs/reference/functions/snippet_html.html) +を参照してください。 + +### インデックスにより関連付けられたテーブル間のネストしたインデックス検索のサポート + +今回のリリースでは複数のテーブルの間でインデックスが張られているなど、テーブル間の関連が存在する場合にインデックス名をネストして指定することで複数テーブルからまとめて検索することができるようになりました。 + +これだけだとわかりにくいので、例を示します。 + +ブログ記事を格納してるテーブルと記事に対するコメントを格納するテーブルがあるとします。 + +記事を格納しているテーブルには記事そのもののカラムとコメントテーブルを参照するカラムがあり、コメントテーブルにはコメントを格納するカラムと、記事テーブルへのインデックスカラムがあるとします。 + +これまで特定のキーワードをコメントに含む記事を探すには、コメントテーブルの全文検索と、その全文検索結果から該当記事を検索する必要がありました。 + +これが、参照先のインデックスカラムを指定することでまとめて検索できるようになりました。 + +どう使うかのサンプルを以下で示します。 + +サンプルのスキーマ定義は以下の通りです。 + + table_create Comments TABLE_HASH_KEY UInt32 + column_create Comments content COLUMN_SCALAR ShortText + + table_create Articles TABLE_NO_KEY + column_create Articles content COLUMN_SCALAR Text + column_create Articles comment COLUMN_SCALAR Comments + + table_create Lexicon TABLE_PAT_KEY|KEY_NORMALIZE ShortText --default_tokenizer TokenBigram + column_create Lexicon articles_content COLUMN_INDEX|WITH_POSITION Articles content + column_create Lexicon comments_content COLUMN_INDEX|WITH_POSITION Comments content + + column_create Comments article COLUMN_INDEX Articles comment + +記事とコメントのサンプルデータは以下のようにして登録します。 + + load --table Comments + [ + {"_key": 1, "content": "I'm using groonga too!"}, + {"_key": 2, "content": "I'm using groonga and mroonga!"}, + {"_key": 3, "content": "I'm using mroonga too!"} + ] + + load --table Articles + [ + {"content": "Groonga is fast!", "comment": 1}, + {"content": "Groonga is useful!"}, + {"content": "Mroonga is fast!", "comment": 3} + ] + +コメントテーブルから指定したキーワードを含むレコードを検索し、そのコメントのレコードを参照しているカラムの記事データを取得するクエリは以下のように書くことができます。 + + select Articles --match_columns comment.content --query groonga --output_columns "_id, _score, *" + +`--match_columns` +にはArticlesテーブルのcommentカラムとCommentsテーブルのcontentカラムとをピリオドで連結して指定します。 + +するとCommentsテーブルのcontentカラムをまずはじめに全文検索し、該当するレコードを参照しているArticlesのcommentカラムのレコードを取得できる仕組みになっています。 +(そのため、上記スキーマ定義でCommentsテーブルにインデックスカラムarticleがない場合、CommentsテーブルからArticlesテーブルを辿れないので正しい結果が得られません。) + + [ + [0,1353903149.81632,0.000459432601928711], + [ + [ + [1], + [["_id","UInt32"],["_score","Int32"],["comment","Comments"],["content","Text"]], + [1,1,1,"Groonga is fast!"] + ] + ] + ] + +従来から可能であった特定のキーワードを含む記事の全文検索だけでなく、特定のキーワード(上記の場合はgroonga)を含むコメントを参照している記事を取得することができるようになりました。 + +### インデックスを利用した高速な指定範囲検索のサポート + +今回のリリースでは、範囲を指定した検索をインデックスを使って高速に行えるようになりました。 + +どれくらい高速になったかという例を簡単なサンプルで示します。 + +サンプルのスキーマ定義は以下の通りです。 + + table_create Shops TABLE_HASH_KEY ShortText + column_create Shops ranking COLUMN_SCALAR UInt32 + + table_create Rankings TABLE_PAT_KEY UInt32 + column_create Rankings shops_ranking COLUMN_INDEX Shops ranking + +以下のようにしてお店とそのランキングの値を登録します。高速化した結果をよりわかりやすく示すために、1000万件ほどのデータを登録します。 + + load --table Shops + [ + {"_key": "Shop1", "ranking": 1}, + {"_key": "Shop2", "ranking": 2}, + {"_key": "Shop3", "ranking": 3}, + {"_key": "Shop4", "ranking": 4}, + {"_key": "Shop5", "ranking": 5}, + {"_key": "Shop6", "ranking": 6}, + {"_key": "Shop7", "ranking": 7}, + {"_key": "Shop8", "ranking": 8}, + {"_key": "Shop9", "ranking": 9}, + {"_key": "Shop10", "ranking": 10}, + {"_key": "Shop11", "ranking": 11}, + ... + ] + +お店とランキングの値が登録できたので、実際に検索してみます。ここでは、ランキング上位10店を検索してみます。 + +範囲の指定にはrankingカラムに対して `'ranking <= 10'` として表現します。 + +実際の検索結果は以下のようになります。(groonga 2.0.8の場合) + + select Shops --filter 'ranking <= 10' + [ + [0,1355465886.15137,1.39784264564514], + [ + [ + [10], + [ + ["_id","UInt32"],["_key","ShortText"],["ranking","UInt32"] + ], + [1,"Shop1",1], + [2,"Shop2",2], + [3,"Shop3",3], + [4,"Shop4",4], + [5,"Shop5",5], + [6,"Shop6",6], + [7,"Shop7",7], + [8,"Shop8",8], + [9,"Shop9",9], + [10,"Shop10",10] + ] + ] + ] + +同じようにしてgroonga +2.0.9でも検索してみます。検索結果は以下のようになります。 + + select Shops --filter 'ranking <= 10' + [ + [0,1355465837.0779,0.00165677070617676], + [ + [ + [10], + [ + ["_id","UInt32"],["_key","ShortText"],["ranking","UInt32"] + ], + [1,"Shop1",1], + [2,"Shop2",2], + [3,"Shop3",3], + [4,"Shop4",4], + [5,"Shop5",5], + [6,"Shop6",6], + [7,"Shop7",7], + [8,"Shop8",8], + [9,"Shop9",9], + [10,"Shop10",10] + ] + ] + ] + +検索結果は当然同じですが、実行時間が違います。実行時間は以下の部分が該当します。 + + [0,1355465886.15137,1.39784264564514], + +groonga 2.0.8の場合は1.39784264564514秒でした。 + + [0,1355465837.0779,0.00165677070617676], + +一方、groonga 2.0.9の場合は0.00165677070617676秒でした。 + +groongaが出力する結果のフォーマット詳細については +[出力形式](http://groonga.org/ja/docs/reference/command/output_format.html) +を参照してください。 + + --------------------- ------------------ --------------------- + groongaのバージョン groonga 2.0.8 groonga 2.0.9 + 実行時間(秒) 1.39784264564514 0.00165677070617676 + --------------------- ------------------ --------------------- + +2.0.9にするだけでこのサンプルのケースでは実行時間が数ミリ秒にまで短縮できていることがわかります。 + +測定は以下の環境で実施しました。 + + -------- ------------------------------------ + CPU Intel® Core i7-2640M CPU****@2***** + メモリ 8GB + -------- ------------------------------------ + +### geo_distance()関数で矩形近似により境界をまたぐ二点間の距離計算をサポート + +今回のリリースでは、geo_distance()関数で子午線や日付変更線、赤道といった境界をまたいだ場合での任意の二点間の距離計算をサポートしました。 + +距離の近似方法にはいくつかやりかたがあります。groongaではgeo_distance関数において以下の近似方法をサポートしています。 +それぞれ、速度や正確さにトレードオフが存在します。 + +- [矩形近似](http://groonga.org/ja/docs/reference/functions/geo_distance.html#rectangle) + 二点間の地形を平面とみなして計算します。 + + 最も高速に距離を計算できますが、二点間の距離が離れると正確に計算できません。 + +<!-- --> + +- [球面近似](http://groonga.org/ja/docs/reference/functions/geo_distance.html#sphere) + 二点間の地形を球面とみなして計算します。 + 矩形近似より遅くなりますが、より正確に距離を計算できます。 + +<!-- --> + +- [楕円近似](http://groonga.org/ja/docs/reference/functions/geo_distance.html#ellipsoid) + 二点間の地形を楕円体とみなして計算します。 + 球面近似より遅くなりますが、より正確に距離を計算できます。 + +今回の機能追加は近似方法として矩形近似を選択した場合に有効です。 + +実際に、子午線をまたいで二点間の距離を計算するサンプルを紹介します。 + +以下のサンプルではパリ(フランス)からマドリード(スペイン)の距離を矩形近似で計算しています。 + +"175904000x8464000"と表記されているのがパリ(フランス)のミリ秒表記で、"145508000x-13291000"がマドリード(スペイン)のミリ秒表記です。 + + select Geo --output_columns distance --scorer 'distance = geo_distance("175904000x8464000", "145508000x-13291000", "rectangle")' + [ + [ + 0, + 1337566253.89858, + 0.000355720520019531 + ], + [ + [ + [ + 1 + ], + [ + [ + "distance", + "Int32" + ] + ], + [ + 1051293 + ] + ] + ] + ] + +ある点の経緯度をどのようにミリ秒表記で表わすかについては、 +[組込型](http://groonga.org/ja/docs/reference/type.html) +に詳細を記載してあります。 + +関数の詳しい使いかたについては +[geo_distance](http://groonga.org/ja/docs/reference/functions/geo_distance.html#ellipsoid) +のドキュメントを参照してください。 + +### さいごに + +2.0.8からの詳細な変更点は [2.0.9リリース +2012/11/29](/ja/docs/news.html#release-2-0-9) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2012-11-29-release.textile (+0 -340) 100644 =================================================================== --- ja/_posts/2012-11-29-release.textile 2016-02-07 10:35:40 +0900 (2e9590d) +++ /dev/null @@ -1,340 +0,0 @@ ---- -layout: post.ja -title: groonga 2.0.9リリース -description: groonga 2.0.9をリリースしました! ---- - -今日は "groonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」":http://atnd.org/events/33070 の当日ですね。 - -h2. groonga 2.0.9リリース - -"groonga 2.0.9":/ja/docs/news.html#release-2-0-9 をリリースしました! - -今回のリリースの主なトピックは4つあります。 - -* snippet_html()関数の実験的なサポート -* インデックスにより関連付けられたテーブル間のネストしたインデックス検索のサポート -* インデックスを利用した高速な指定範囲検索のサポート -* geo_distance()関数で矩形近似により境界をまたぐ二点間の距離計算をサポート - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -h3. snippet_html()関数の実験的なサポート - -今回のリリースでは、実験的ではありますが、キーワードとその周辺のテキストを抽出するためのsnippet_html()関数をサポートしました。 -あくまで実験的なので今後予告なく変更する可能性があります。 - -snippet_html()関数は以下のような構文で使用します。 - -<pre> - snippet_html(column名) -</pre> - -どんな風に使えるかを具体例で説明します。以下は説明のためのスキーマ定義とサンプルデータです。 - -<pre> - table_create Documents TABLE_NO_KEY - column_create Documents content COLUMN_SCALAR Text - table_create Terms TABLE_PAT_KEY|KEY_NORMALIZE ShortText --default_tokenizer TokenBigram - column_create Terms documents_content_index COLUMN_INDEX|WITH_POSITION Documents content - - load --table Documents - [ - ["content"], - ["Groonga is a fast and accurate full text search engine based on inverted index."], - ["Groonga is also a column-oriented database management system (DBMS)."], - ["Mroonga was called groonga storage engine."] - ] -</pre> - -Documentsテーブルに登録したデータからキーワードgroongaを含むテキストを抽出するには以下のクエリを実行します。 - -<pre> - select Documents --output_columns "snippet_html(content)" --command_version 2 --match_columns content --query "groonga" -</pre> - -上記クエリでは検索したいキーワードgroongaを @--query@ に指定し、検索対象のカラムには @--match_columns content@ としてDocumentテーブルのcontentカラムを指定します。 - -このとき、クエリにコマンドバージョン(@--command_version 2@)を指定する必要があります。これは、 @--ouput_columns@ で関数を呼びだすことができるようになったのは2.0.9からだからです。 - -結果は以下のようになり、指定したキーワードが @<span>@ タグで囲まれ、キーワード周辺のテキストとして抽出できていることがわかります。 - -検索結果のキーワードをハイライト表示したいときに便利な機能です。 - -<pre> - [ - [0,1353893385.5454,0.000486850738525391], - [ - [ - [3], - [["snippet_html","null"]], - [["<span class=\"keyword\">Groonga</span> is a fast and accurate full text search engine based on inverted index."]], - [["<span class=\"keyword\">Groonga</span> is also a column-oriented database management system (DBMS)."]], - [["Mroonga was called <span class=\"keyword\">groonga</span> storage engine."]] - ] - ] - ] -</pre> - -関数の詳細については "snippet_html()":http://groonga.org/ja/docs/reference/functions/snippet_html.html を参照してください。 - -h3. インデックスにより関連付けられたテーブル間のネストしたインデックス検索のサポート - -今回のリリースでは複数のテーブルの間でインデックスが張られているなど、テーブル間の関連が存在する場合にインデックス名をネストして指定することで複数テーブルからまとめて検索することができるようになりました。 - -これだけだとわかりにくいので、例を示します。 - -ブログ記事を格納してるテーブルと記事に対するコメントを格納するテーブルがあるとします。 - -記事を格納しているテーブルには記事そのもののカラムとコメントテーブルを参照するカラムがあり、コメントテーブルにはコメントを格納するカラムと、記事テーブルへのインデックスカラムがあるとします。 - -これまで特定のキーワードをコメントに含む記事を探すには、コメントテーブルの全文検索と、その全文検索結果から該当記事を検索する必要がありました。 - -これが、参照先のインデックスカラムを指定することでまとめて検索できるようになりました。 - -どう使うかのサンプルを以下で示します。 - -サンプルのスキーマ定義は以下の通りです。 - -<pre> - table_create Comments TABLE_HASH_KEY UInt32 - column_create Comments content COLUMN_SCALAR ShortText - - table_create Articles TABLE_NO_KEY - column_create Articles content COLUMN_SCALAR Text - column_create Articles comment COLUMN_SCALAR Comments - - table_create Lexicon TABLE_PAT_KEY|KEY_NORMALIZE ShortText --default_tokenizer TokenBigram - column_create Lexicon articles_content COLUMN_INDEX|WITH_POSITION Articles content - column_create Lexicon comments_content COLUMN_INDEX|WITH_POSITION Comments content - - column_create Comments article COLUMN_INDEX Articles comment -</pre> - -記事とコメントのサンプルデータは以下のようにして登録します。 - -<pre> - load --table Comments - [ - {"_key": 1, "content": "I'm using groonga too!"}, - {"_key": 2, "content": "I'm using groonga and mroonga!"}, - {"_key": 3, "content": "I'm using mroonga too!"} - ] - - load --table Articles - [ - {"content": "Groonga is fast!", "comment": 1}, - {"content": "Groonga is useful!"}, - {"content": "Mroonga is fast!", "comment": 3} - ] -</pre> - -コメントテーブルから指定したキーワードを含むレコードを検索し、そのコメントのレコードを参照しているカラムの記事データを取得するクエリは以下のように書くことができます。 - -<pre> - select Articles --match_columns comment.content --query groonga --output_columns "_id, _score, *" -</pre> - - �� --match_columns@ にはArticlesテーブルのcommentカラムとCommentsテーブルのcontentカラムとをピリオドで連結して指定します。 - -するとCommentsテーブルのcontentカラムをまずはじめに全文検索し、該当するレコードを参照しているArticlesのcommentカラムのレコードを取得できる仕組みになっています。 -(そのため、上記スキーマ定義でCommentsテーブルにインデックスカラムarticleがない場合、CommentsテーブルからArticlesテーブルを辿れないので正しい結果が得られません。) - -<pre> - [ - [0,1353903149.81632,0.000459432601928711], - [ - [ - [1], - [["_id","UInt32"],["_score","Int32"],["comment","Comments"],["content","Text"]], - [1,1,1,"Groonga is fast!"] - ] - ] - ] -</pre> - -従来から可能であった特定のキーワードを含む記事の全文検索だけでなく、特定のキーワード(上記の場合はgroonga)を含むコメントを参照している記事を取得することができるようになりました。 - -h3. インデックスを利用した高速な指定範囲検索のサポート - -今回のリリースでは、範囲を指定した検索をインデックスを使って高速に行えるようになりました。 - -どれくらい高速になったかという例を簡単なサンプルで示します。 - -サンプルのスキーマ定義は以下の通りです。 - -<pre> - table_create Shops TABLE_HASH_KEY ShortText - column_create Shops ranking COLUMN_SCALAR UInt32 - - table_create Rankings TABLE_PAT_KEY UInt32 - column_create Rankings shops_ranking COLUMN_INDEX Shops ranking -</pre> - -以下のようにしてお店とそのランキングの値を登録します。高速化した結果をよりわかりやすく示すために、1000万件ほどのデータを登録します。 - -<pre> - load --table Shops - [ - {"_key": "Shop1", "ranking": 1}, - {"_key": "Shop2", "ranking": 2}, - {"_key": "Shop3", "ranking": 3}, - {"_key": "Shop4", "ranking": 4}, - {"_key": "Shop5", "ranking": 5}, - {"_key": "Shop6", "ranking": 6}, - {"_key": "Shop7", "ranking": 7}, - {"_key": "Shop8", "ranking": 8}, - {"_key": "Shop9", "ranking": 9}, - {"_key": "Shop10", "ranking": 10}, - {"_key": "Shop11", "ranking": 11}, - ... - ] -</pre> - -お店とランキングの値が登録できたので、実際に検索してみます。ここでは、ランキング上位10店を検索してみます。 - -範囲の指定にはrankingカラムに対して @'ranking <= 10'@ として表現します。 - -実際の検索結果は以下のようになります。(groonga 2.0.8の場合) - -<pre> - select Shops --filter 'ranking <= 10' - [ - [0,1355465886.15137,1.39784264564514], - [ - [ - [10], - [ - ["_id","UInt32"],["_key","ShortText"],["ranking","UInt32"] - ], - [1,"Shop1",1], - [2,"Shop2",2], - [3,"Shop3",3], - [4,"Shop4",4], - [5,"Shop5",5], - [6,"Shop6",6], - [7,"Shop7",7], - [8,"Shop8",8], - [9,"Shop9",9], - [10,"Shop10",10] - ] - ] - ] -</pre> - -同じようにしてgroonga 2.0.9でも検索してみます。検索結果は以下のようになります。 - -<pre> - select Shops --filter 'ranking <= 10' - [ - [0,1355465837.0779,0.00165677070617676], - [ - [ - [10], - [ - ["_id","UInt32"],["_key","ShortText"],["ranking","UInt32"] - ], - [1,"Shop1",1], - [2,"Shop2",2], - [3,"Shop3",3], - [4,"Shop4",4], - [5,"Shop5",5], - [6,"Shop6",6], - [7,"Shop7",7], - [8,"Shop8",8], - [9,"Shop9",9], - [10,"Shop10",10] - ] - ] - ] -</pre> - -検索結果は当然同じですが、実行時間が違います。実行時間は以下の部分が該当します。 - -<pre> - [0,1355465886.15137,1.39784264564514], -</pre> - -groonga 2.0.8の場合は1.39784264564514秒でした。 - -<pre> - [0,1355465837.0779,0.00165677070617676], -</pre> - -一方、groonga 2.0.9の場合は0.00165677070617676秒でした。 - -groongaが出力する結果のフォーマット詳細については "出力形式":http://groonga.org/ja/docs/reference/command/output_format.html を参照してください。 - -|groongaのバージョン|groonga 2.0.8|groonga 2.0.9| -|実行時間(秒)|1.39784264564514|0.00165677070617676| - -2.0.9にするだけでこのサンプルのケースでは実行時間が数ミリ秒にまで短縮できていることがわかります。 - -測定は以下の環境で実施しました。 - -|CPU|Intel(R) Core i7-2640M CPU****@2*****| -|メモリ|8GB| - -h3. geo_distance()関数で矩形近似により境界をまたぐ二点間の距離計算をサポート - -今回のリリースでは、geo_distance()関数で子午線や日付変更線、赤道といった境界をまたいだ場合での任意の二点間の距離計算をサポートしました。 - -距離の近似方法にはいくつかやりかたがあります。groongaではgeo_distance関数において以下の近似方法をサポートしています。 -それぞれ、速度や正確さにトレードオフが存在します。 - -* "矩形近似":http://groonga.org/ja/docs/reference/functions/geo_distance.html#rectangle - 二点間の地形を平面とみなして計算します。 - 最も高速に距離を計算できますが、二点間の距離が離れると正確に計算できません。 - -* "球面近似":http://groonga.org/ja/docs/reference/functions/geo_distance.html#sphere - 二点間の地形を球面とみなして計算します。 - 矩形近似より遅くなりますが、より正確に距離を計算できます。 - -* "楕円近似":http://groonga.org/ja/docs/reference/functions/geo_distance.html#ellipsoid - 二点間の地形を楕円体とみなして計算します。 - 球面近似より遅くなりますが、より正確に距離を計算できます。 - -今回の機能追加は近似方法として矩形近似を選択した場合に有効です。 - -実際に、子午線をまたいで二点間の距離を計算するサンプルを紹介します。 - -以下のサンプルではパリ(フランス)からマドリード(スペイン)の距離を矩形近似で計算しています。 - -"175904000x8464000"と表記されているのがパリ(フランス)のミリ秒表記で、"145508000x-13291000"がマドリード(スペイン)のミリ秒表記です。 - -<pre> - select Geo --output_columns distance --scorer 'distance = geo_distance("175904000x8464000", "145508000x-13291000", "rectangle")' - [ - [ - 0, - 1337566253.89858, - 0.000355720520019531 - ], - [ - [ - [ - 1 - ], - [ - [ - "distance", - "Int32" - ] - ], - [ - 1051293 - ] - ] - ] - ] -</pre> - -ある点の経緯度をどのようにミリ秒表記で表わすかについては、 "組込型":http://groonga.org/ja/docs/reference/type.html に詳細を記載してあります。 - -関数の詳しい使いかたについては "geo_distance":http://groonga.org/ja/docs/reference/functions/geo_distance.html#ellipsoid のドキュメントを参照してください。 - -h3. さいごに - -2.0.8からの詳細な変更点は "2.0.9リリース 2012/11/29":/ja/docs/news.html#release-2-0-9 を確認してください。 - -それでは、groongaでガンガン検索してください! Renamed: ja/_posts/2012-11-30-after-groonga-night-3.md (+15 -5) 56% =================================================================== --- ja/_posts/2012-11-30-after-groonga-night-3.textile 2016-02-07 10:35:40 +0900 (29a7ad8) +++ ja/_posts/2012-11-30-after-groonga-night-3.md 2016-02-07 10:50:24 +0900 (07cefa6) @@ -1,18 +1,28 @@ --- layout: post.ja title: groonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」開催しました -description: 11/29にgroonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」を開催しました。 +description: 11/29にgroonga勉強会「全文検索エンジンgroongaを囲む夕べ +3」を開催しました。 --- h2. groonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」を開催しました -一昨年、昨年に引き続き、今年もいい肉の日に "groonga勉強会「全文検索エンジンgroongaを囲む夕べ3」":http://atnd.org/events/33070 を開催しました。 +一昨年、昨年に引き続き、今年もいい肉の日に +[groonga勉強会「全文検索エンジンgroongaを囲む夕べ3」](http://atnd.org/events/33070) +を開催しました。 前回から一年ぶりに開催しましたが、今回は「実際のgroongaの使い方をみんなで共有して話す」というのをコンセプトにし、実際にgroongaを使っているユーザーさんにどのようにgroongaを使っているかの発表を募集しました。結果、8名もの方に発表していただきました!ありがとうございました。 先立って、当日の様子を見ることができるページをご紹介します。 -"Ustreamの録画":http://www.ustream.tv/channel/groonga-night で勉強会の様子を見ることができます。また、当日のTwitterでの様子は "Togetter":http://togetter.com/li/415314 にまとめましたのであわせてご覧ください。 -その他情報については、 "告知ページ":http://atnd.org/events/33070#documents に随時更新していきます。 +[Ustreamの録画](http://www.ustream.tv/channel/groonga-night) +で勉強会の様子を見ることができます。また、当日のTwitterでの様子は +[Togetter](http://togetter.com/li/415314) +にまとめましたのであわせてご覧ください。 +その他情報については、 +[告知ページ](http://atnd.org/events/33070#documents) +に随時更新していきます。 発表資料は現在発表者の方々からご提供いただいています。すべてご提供いただけた時点で、またこのブログにて改めてこの勉強会についてご報告する予定です。 -昨年に引き続き会場を提供してくれた "VOYAGE GROUP":http://voyagegroup.com/ さん、発表者のみなさん、参加者のみなさん、ありがとうございました! +昨年に引き続き会場を提供してくれた [VOYAGE +GROUP](http://voyagegroup.com/) +さん、発表者のみなさん、参加者のみなさん、ありがとうございました! また、来年のいい肉の日にお会いしましょう。 Added: ja/_posts/2012-12-17-look-back-groonga-night-3.md (+43 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-12-17-look-back-groonga-night-3.md 2016-02-07 10:50:24 +0900 (55bbd06) @@ -0,0 +1,43 @@ +--- +layout: post.ja +title: groonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」を振り返って +description: +11/29に開催したgroonga勉強会「全文検索エンジンgroongaを囲む夕べ +3」について振り返りました。 +--- +h2. groonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」を振り返って + +今年もいい肉の日に、groonga勉強会の3回目 +[「全文検索エンジンgroongaを囲む夕べ3」](http://atnd.org/events/33070) +を開催しました。 +簡単なまとめの記事を +[以前掲載しました](2012/11/30/after-groonga-night-3.html) +が、もう一度、開催者からの感想や新しく公開された紹介記事や動画についてお伝えします。 + +前回の「全文検索エンジンgroongaを囲む夕べ2」からまる1年後の開催でしたが、今回は前回までと異なり、「実際にgroongaをどのように使っているかを共有する」というのをコンセプトにしました。これは、実際のgroongaの使われ方を開発者を含めたgroongaのユーザーで共有することで、よりよいgroongaをつくるための足がかりにするためでした。 +このコンセプトをもとに、8人のユーザーさんからgroongaや +[関連プロダクト](http://groonga.org/ja/related-projects.html) +をどのように使っているかを発表していただきました。 +その発表の中で、どのようにgroongaを使っているかをはじめ、どうしてgroongaを選んだか、groongaにほしい機能についてなど、groongaについてさまざまな意見を発表していただきました。発表を拝見して、groongaに対してとても深く考えて使ってくださっているのを感じました。また発表に関して +[twitter上で多くの反応](http://togetter.com/li/415314) +がありました。さらに、勉強会の後に開いた懇親会でも、発表者の方で実際にデモをしている人がいらっしゃるなど、非常に盛り上がりました。 +全体を通してみると、コンセプトを満たす勉強会ができたと感じています。ここで得られた意見をもとに、groongaをよりよく改善していく足がかりにしていきます。ありがとうございます。 + +さて、今回の勉強会について、EnterpriseZineのDBOnlineに紹介記事( +[全文検索エンジンgroongaがつなぐコミュニティの輪](http://enterprisezine.jp/dbonline/detail/4419) +)を掲載していただきました!ありがとうございます。 +また、勉強会当日の様子が +[Ustream](http://www.ustream.tv/channel/groonga-night) の他に +[Vimeo](http://vimeo.com/channels/groonganight3) +にもアップロードされました。( +[ニコニコ生放送](http://live.nicovideo.jp/watch/lv117105864) +でも配信していただきましたが、視聴期限が切れたため現時点では視聴不可になっています。)都合がつかず勉強会に参加できなかった人や、参加した人でもあとから振り返るためにご活用ください。 +これらの勉強会当日の様子を振り返るための動画やtwitterでの反応、また勉強会での開発者やユーザーさんが使用した発表資料は、 +[ATNDでの告知ページ](http://atnd.org/events/33070#documents) +やgroongaのサイトの [発表ページ](../publication/#groonga-night-3) +にて随時更新しています。あわせてご覧ください。 + +昨年に引き続き会場を提供してくれた [VOYAGE +GROUP](http://voyagegroup.com/) +さん、発表者のみなさん、参加者のみなさん、協力してくださった方、改めてありがとうございました! +来年のいい肉の日でお会いできることを楽しみにしています。 Deleted: ja/_posts/2012-12-17-look-back-groonga-night-3.textile (+0 -21) 100644 =================================================================== --- ja/_posts/2012-12-17-look-back-groonga-night-3.textile 2016-02-07 10:35:40 +0900 (2f12435) +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: post.ja -title: groonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」を振り返って -description: 11/29に開催したgroonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」について振り返りました。 ---- -h2. groonga勉強会「全文検索エンジンgroongaを囲む夕べ 3」を振り返って - -今年もいい肉の日に、groonga勉強会の3回目 "「全文検索エンジンgroongaを囲む夕べ3」":http://atnd.org/events/33070 を開催しました。 -簡単なまとめの記事を "以前掲載しました":2012/11/30/after-groonga-night-3.html が、もう一度、開催者からの感想や新しく公開された紹介記事や動画についてお伝えします。 - -前回の「全文検索エンジンgroongaを囲む夕べ2」からまる1年後の開催でしたが、今回は前回までと異なり、「実際にgroongaをどのように使っているかを共有する」というのをコンセプトにしました。これは、実際のgroongaの使われ方を開発者を含めたgroongaのユーザーで共有することで、よりよいgroongaをつくるための足がかりにするためでした。 -このコンセプトをもとに、8人のユーザーさんからgroongaや "関連プロダクト":http://groonga.org/ja/related-projects.html をどのように使っているかを発表していただきました。 -その発表の中で、どのようにgroongaを使っているかをはじめ、どうしてgroongaを選んだか、groongaにほしい機能についてなど、groongaについてさまざまな意見を発表していただきました。発表を拝見して、groongaに対してとても深く考えて使ってくださっているのを感じました。また発表に関して "twitter上で多くの反応":http://togetter.com/li/415314 がありました。さらに、勉強会の後に開いた懇親会でも、発表者の方で実際にデモをしている人がいらっしゃるなど、非常に盛り上がりました。 -全体を通してみると、コンセプトを満たす勉強会ができたと感じています。ここで得られた意見をもとに、groongaをよりよく改善していく足がかりにしていきます。ありがとうございます。 - -さて、今回の勉強会について、EnterpriseZineのDBOnlineに紹介記事( "全文検索エンジンgroongaがつなぐコミュニティの輪":http://enterprisezine.jp/dbonline/detail/4419 )を掲載していただきました!ありがとうございます。 -また、勉強会当日の様子が "Ustream":http://www.ustream.tv/channel/groonga-night の他に "Vimeo":http://vimeo.com/channels/groonganight3 にもアップロードされました。( "ニコニコ生放送":http://live.nicovideo.jp/watch/lv117105864 でも配信していただきましたが、視聴期限が切れたため現時点では視聴不可になっています。)都合がつかず勉強会に参加できなかった人や、参加した人でもあとから振り返るためにご活用ください。 -これらの勉強会当日の様子を振り返るための動画やtwitterでの反応、また勉強会での開発者やユーザーさんが使用した発表資料は、 "ATNDでの告知ページ":http://atnd.org/events/33070#documents やgroongaのサイトの "発表ページ":../publication/#groonga-night-3 にて随時更新しています。あわせてご覧ください。 - -昨年に引き続き会場を提供してくれた "VOYAGE GROUP":http://voyagegroup.com/ さん、発表者のみなさん、参加者のみなさん、協力してくださった方、改めてありがとうございました! -来年のいい肉の日でお会いできることを楽しみにしています。 Added: ja/_posts/2012-12-29-release.md (+156 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2012-12-29-release.md 2016-02-07 10:50:24 +0900 (ee662cb) @@ -0,0 +1,156 @@ +--- +layout: post.ja +title: groonga 2.1.0リリース +description: groonga 2.1.0をリリースしました! +--- + +今日は年内最後の肉の日ですね。 + +2月の肉の日に2.0.0をリリースして以来、沢山の改善や変更、不具合修正が行われました。 + +毎月のリリースでは2.0.xとマイクロバージョンを上げていましたが、今回は年末ですしキリもいいのでマイナーバージョンを上げて2.1.0としました。:-) + +groonga 2.1.0リリース +--------------------- + +[groonga 2.1.0](/ja/docs/news.html#release-2-1-0) をリリースしました! + +今回のリリースの主なトピックは3つあります。 + +- snippet_html()関数の引数として式をサポート +- 正規化のためのプラグイン指定をサポート +- コマンドリストでの継続行のサポート + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +### snippet_html()関数の引数として式をサポート + +先月のリリース(2.0.9)では、キーワードとその周辺のテキストを抽出するための +`snippet_html()` 関数を実験的にサポートしました。 + +今回のリリースではこの `snippet_html()` +関数の機能を強化し、引数に式を指定できるようにしました。 + +これまでは `snippet_html()` +関数は以下のようにカラム名を指定することができました。 + + snippet_html(column名) + +これが、以下のように任意の式も受け付けるようになりました。 + + snippet_html("STRING" + "STRING") + +この変更で複数のカラムを対象としたスニペットをまとめて取得できるようになりました。どんな風に使えるようになったかを具体例で説明します。 + +以下は説明のためのスキーマ定義とサンプルデータです。 + + table_create Documents TABLE_NO_KEY + column_create Documents title COLUMN_SCALAR ShortText + column_create Documents content COLUMN_SCALAR Text + + table_create Terms TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram + column_create Terms document_title_index COLUMN_INDEX|WITH_POSITION Documents title + column_create Terms document_content_index COLUMN_INDEX|WITH_POSITION Documents content + + load --table Documents + [ + ["title", "content"], + ["Groonga overview", "Groonga is a fast and accurate full text search engine based on inverted index."], + ["Full text search and Instant update", "In widely used DBMSs, updates are immediately processed, for example, a newly registered record appears in the result of the next query."], + ["Column store and aggregate query", "People can collect more than enough data in the Internet era."] + ] + +これまでDocumentsテーブルに登録したデータからキーワードGroongaを含むスニペットを取得したくてもtitleもしくはcontentカラムのどちらかしか指定することができませんでした。 + + select Documents --output_columns "snippet_html(content)" --command_version 2 --match_columns content --query "Groonga" + +これだとtitleカラムやcontentカラムに指定したキーワードを含むスニペットをまとめて取得したいときに不便です。 + +今回のリリースではsnippet_html()関数の引数を以下のように指定することで、まとめて取得することができるようになりました。 + + select Documents --match_columns title||content --query 'Groonga' --output_columns 'snippet_html(title + " " + content)' --command_version 2 + +上記クエリでは検索したいキーワードGroongaを `--query` +に指定し、検索対象のカラムとしてtitleカラムもしくはcontentカラムを +`--match_columns` により指定しています。 + +`snippet_html()` 関数の引数に title + " " + +contentと指定することで、titleカラムから取得したスニペットとcontentカラムから取得したスニペットを連結した結果を返すようにしています。(" +"は見栄えの都合でスペースを入れています) + +結果は以下のようになり、指定したキーワードが `<span>` +タグで囲まれ、キーワード周辺のテキストがスニペットとしてまとめて抽出できていることがわかります。 + +検索結果のうち、タイトルと本文に含まれる指定したキーワードをハイライト表示するということがこれまでより簡単に実現できるようになりました。 + + [ + [0,1356406051.43579,0.000200510025024414], + [ + [ + [1], + [ + ["snippet_html","null"] + ], + [ + ["Groonga overview Groonga is a fast and accurate full text search engine based on inverted index."] + ] + ] + ] + ] + +関数の詳細については +[snippet_html()](http://groonga.org/ja/docs/reference/functions/snippet_html.html) +を参照してください。 + +### 正規化のためのプラグイン指定をサポート + +今回のリリースでは、正規化方法をプラグインで指定する仕組みを導入しました。 + +groongaでは +[Unicodeの正規化形式](http://ja.wikipedia.org/wiki/Unicode正規化) +としてNFKCを適用するようになっています。 + +これをテーブルごとに任意の正規化方法を指定できるように拡張しました。 + +この機能追加が入ったことで、将来的にMySQLと同じ文字照合順序(COLLATION)のサポートがmroongaで可能になります。 + +正規化形式の指定の仕方は以下のように `--normalizer` +オプションをテーブルの作成時に指定します。 + + table_create Terms TABLE_PAT_KEY ShortText --normalizer NormalizerAuto + +これまでテーブルの作成時に `KEY_NORMALIZE` を使用していた場合と +`--normalizer NormalizerAuto` は同じ意味になっています。 + +まだサンプルとなるプラグインは追加していませんが、開発者向けのヘッダファイル +`groonga/normalizer.h` にて必要なAPIを公開しています。 + +今回この機能拡張を行ったことで、データベースを一旦開くと古いバージョンのgroongaではデータベースを開けなくなることに注意が必要です。 + +### コマンドリストでの継続行のサポート + +今回のリリースでは継続行のサポートを追加しました。 + +これまで、groongaコマンドに与えるコマンドリストは必ず一行で記述する必要がありました。クエリが長くなってくるとクエリそのものが見づらいという問題がありました。 + +これが、継続行であることを示す `''` +を使うことでコマンドリストの途中で折り返すことができるようになりました。 + +これまで、以下のように一行で書いていたものを + + table_create --name Terms --flags TABLE_PAT_KEY --key_type ShortText --default_tokenizer TokenBigram + +以下のように書けるようになります。 + + table_create --name Terms + --flags TABLE_PAT_KEY + --key_type ShortText + --default_tokenizer TokenBigram + +### さいごに + +2.0.9からの詳細な変更点は [2.1.0リリース +2012/12/29](/ja/docs/news.html#release-2-1-0) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2012-12-29-release.textile (+0 -155) 100644 =================================================================== --- ja/_posts/2012-12-29-release.textile 2016-02-07 10:35:40 +0900 (63b45d9) +++ /dev/null @@ -1,155 +0,0 @@ ---- -layout: post.ja -title: groonga 2.1.0リリース -description: groonga 2.1.0をリリースしました! ---- - -今日は年内最後の肉の日ですね。 - -2月の肉の日に2.0.0をリリースして以来、沢山の改善や変更、不具合修正が行われました。 - -毎月のリリースでは2.0.xとマイクロバージョンを上げていましたが、今回は年末ですしキリもいいのでマイナーバージョンを上げて2.1.0としました。:-) - -h2. groonga 2.1.0リリース - -"groonga 2.1.0":/ja/docs/news.html#release-2-1-0 をリリースしました! - -今回のリリースの主なトピックは3つあります。 - -* snippet_html()関数の引数として式をサポート -* 正規化のためのプラグイン指定をサポート -* コマンドリストでの継続行のサポート - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -h3. snippet_html()関数の引数として式をサポート - -先月のリリース(2.0.9)では、キーワードとその周辺のテキストを抽出するための @snippet_html()@ 関数を実験的にサポートしました。 - -今回のリリースではこの @snippet_html()@ 関数の機能を強化し、引数に式を指定できるようにしました。 - -これまでは @snippet_html()@ 関数は以下のようにカラム名を指定することができました。 - -<pre> - snippet_html(column名) -</pre> - -これが、以下のように任意の式も受け付けるようになりました。 - -<pre> - snippet_html("STRING" + "STRING") -</pre> - -この変更で複数のカラムを対象としたスニペットをまとめて取得できるようになりました。どんな風に使えるようになったかを具体例で説明します。 - -以下は説明のためのスキーマ定義とサンプルデータです。 - -<pre> - table_create Documents TABLE_NO_KEY - column_create Documents title COLUMN_SCALAR ShortText - column_create Documents content COLUMN_SCALAR Text - - table_create Terms TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram - column_create Terms document_title_index COLUMN_INDEX|WITH_POSITION Documents title - column_create Terms document_content_index COLUMN_INDEX|WITH_POSITION Documents content - - load --table Documents - [ - ["title", "content"], - ["Groonga overview", "Groonga is a fast and accurate full text search engine based on inverted index."], - ["Full text search and Instant update", "In widely used DBMSs, updates are immediately processed, for example, a newly registered record appears in the result of the next query."], - ["Column store and aggregate query", "People can collect more than enough data in the Internet era."] - ] -</pre> - -これまでDocumentsテーブルに登録したデータからキーワードGroongaを含むスニペットを取得したくてもtitleもしくはcontentカラムのどちらかしか指定することができませんでした。 - -<pre> - select Documents --output_columns "snippet_html(content)" --command_version 2 --match_columns content --query "Groonga" -</pre> - -これだとtitleカラムやcontentカラムに指定したキーワードを含むスニペットをまとめて取得したいときに不便です。 - -今回のリリースではsnippet_html()関数の引数を以下のように指定することで、まとめて取得することができるようになりました。 - -<pre> - select Documents --match_columns title||content --query 'Groonga' --output_columns 'snippet_html(title + " " + content)' --command_version 2 -</pre> - -上記クエリでは検索したいキーワードGroongaを @--query@ に指定し、検索対象のカラムとしてtitleカラムもしくはcontentカラムを @--match_columns@ により指定しています。 - - �� snippet_html()@ 関数の引数に title + " " + contentと指定することで、titleカラムから取得したスニペットとcontentカラムから取得したスニペットを連結した結果を返すようにしています。(" "は見栄えの都合でスペースを入れています) - -結果は以下のようになり、指定したキーワードが @<span>@ タグで囲まれ、キーワード周辺のテキストがスニペットとしてまとめて抽出できていることがわかります。 - -検索結果のうち、タイトルと本文に含まれる指定したキーワードをハイライト表示するということがこれまでより簡単に実現できるようになりました。 - -<pre> - [ - [0,1356406051.43579,0.000200510025024414], - [ - [ - [1], - [ - ["snippet_html","null"] - ], - [ - ["<span class=\"keyword\">Groonga</span> overview <span class=\"keyword\">Groonga</span> is a fast and accurate full text search engine based on inverted index."] - ] - ] - ] - ] -</pre> - -関数の詳細については "snippet_html()":http://groonga.org/ja/docs/reference/functions/snippet_html.html を参照してください。 - -h3. 正規化のためのプラグイン指定をサポート - -今回のリリースでは、正規化方法をプラグインで指定する仕組みを導入しました。 - -groongaでは "Unicodeの正規化形式":http://ja.wikipedia.org/wiki/Unicode正規化 としてNFKCを適用するようになっています。 - -これをテーブルごとに任意の正規化方法を指定できるように拡張しました。 - -この機能追加が入ったことで、将来的にMySQLと同じ文字照合順序(COLLATION)のサポートがmroongaで可能になります。 - -正規化形式の指定の仕方は以下のように @--normalizer@ オプションをテーブルの作成時に指定します。 - -<pre> - table_create Terms TABLE_PAT_KEY ShortText --normalizer NormalizerAuto -</pre> - -これまでテーブルの作成時に @KEY_NORMALIZE@ を使用していた場合と @--normalizer NormalizerAuto@ は同じ意味になっています。 - -まだサンプルとなるプラグインは追加していませんが、開発者向けのヘッダファイル @groonga/normalizer.h@ にて必要なAPIを公開しています。 - -今回この機能拡張を行ったことで、データベースを一旦開くと古いバージョンのgroongaではデータベースを開けなくなることに注意が必要です。 - -h3. コマンドリストでの継続行のサポート - -今回のリリースでは継続行のサポートを追加しました。 - -これまで、groongaコマンドに与えるコマンドリストは必ず一行で記述する必要がありました。クエリが長くなってくるとクエリそのものが見づらいという問題がありました。 - -これが、継続行であることを示す @'\'@ を使うことでコマンドリストの途中で折り返すことができるようになりました。 - -これまで、以下のように一行で書いていたものを - -<pre> - table_create --name Terms --flags TABLE_PAT_KEY --key_type ShortText --default_tokenizer TokenBigram -</pre> - -以下のように書けるようになります。 - -<pre> - table_create --name Terms \ - --flags TABLE_PAT_KEY \ - --key_type ShortText \ - --default_tokenizer TokenBigram -</pre> - -h3. さいごに - -2.0.9からの詳細な変更点は "2.1.0リリース 2012/12/29":/ja/docs/news.html#release-2-1-0 を確認してください。 - -それでは、groongaでガンガン検索してください! Renamed: ja/_posts/2013-01-08-fluent-plugin-groonga.md (+34 -16) 61% =================================================================== --- ja/_posts/2013-01-08-fluent-plugin-groonga.textile 2016-02-07 10:35:40 +0900 (d913a87) +++ ja/_posts/2013-01-08-fluent-plugin-groonga.md 2016-02-07 10:50:24 +0900 (de23747) @@ -1,13 +1,18 @@ --- layout: post.ja title: fluent-plugin-groongaについて -description: groongaデータベースのレプリケーションを行うfluent-plugin-groongaについて説明します。 +description: +groongaデータベースのレプリケーションを行うfluent-plugin-groongaについて説明します。 --- -去年最後の肉の日である12/29に、ログ収集ツール "fluentd":http://fluentd.org/ を使って、groongaデータベースのレプリケーションを行うライブラリfluent-plugin-groonga 1.0.1をリリースしました。 +去年最後の肉の日である12/29に、ログ収集ツール +[fluentd](http://fluentd.org/) +を使って、groongaデータベースのレプリケーションを行うライブラリfluent-plugin-groonga +1.0.1をリリースしました。 しかし、blogroongaでは今までこのfluent-plugin-groongaについて説明していませんでした。 そこで、この記事ではfluent-plugin-groongaについて説明します。 -h2. fluent-plugin-groongaとは +fluent-plugin-groongaとは +------------------------- fluent-plugin-groongaはfluentdのプラグイン集で、Rubyで実装されています。 通常、fluentdはログの収集に使いますが、fluent-plugin-groongaではgroongaのクエリを複数のgroongaサーバーに転送するために使っています。つまり、fluentdのメッセージルーティング機能だけを使ってレプリケーションに対応したgroongaシステムを構築します。 @@ -17,29 +22,42 @@ fluent-plugin-groongaは、このクライアントとgroongaサーバーの間 レプリケーション実装のために、fluent-plugin-groongaは同じgroongaという名前でinputプラグインとoutputプラグインという2つのプラグインを提供しています。それでは、それぞれのプラグインについて説明します。 - -h3. inputプラグイン +### inputプラグイン inputプラグインは、本来groongaサーバーに送られるgroongaコマンドを受け取ります。groongaコマンドを受け取ったinputプラグインは、受け取ったgroongaのコマンドを0個以上のfluentdを経由し、後述するoutputプラグインに送ります。0個の場合は直接outputプラグインに送ります。 -inputプラグインは、groongaコマンドを受け取るときのインターフェイスとしてHTTPとgroonga独自プロトコルである "GQTP":/ja/docs/spec/gqtp.html の2つを提供します。つまり、inputプラグインにはgroongaサーバーと互換性のあるインターフェイスを用いてgroongaコマンドを送信することができます。このように、互換性のあるインタフェースを提供することで、inputプラグインをgroongaサーバーと同じように使うことができます。 +inputプラグインは、groongaコマンドを受け取るときのインターフェイスとしてHTTPとgroonga独自プロトコルである +[GQTP](/ja/docs/spec/gqtp.html) +の2つを提供します。つまり、inputプラグインにはgroongaサーバーと互換性のあるインターフェイスを用いてgroongaコマンドを送信することができます。このように、互換性のあるインタフェースを提供することで、inputプラグインをgroongaサーバーと同じように使うことができます。 -h3. outputプラグイン +### outputプラグイン -outputプラグインは受け取ったgroongaコマンドをgroongaサーバーに送ります。outputプラグインはHTTP、GQTP、コマンドとすべてのインターフェイスをサポートしています。inputプラグインで受け取ったgroongaコマンドのインタフェースに合わせる必要はありません。また、このとき送信するデータは "copy output plugin":http://docs.fluentd.org/articles/out_copy (英語)で複製することもできます。 +outputプラグインは受け取ったgroongaコマンドをgroongaサーバーに送ります。outputプラグインはHTTP、GQTP、コマンドとすべてのインターフェイスをサポートしています。inputプラグインで受け取ったgroongaコマンドのインタフェースに合わせる必要はありません。また、このとき送信するデータは +[copy output plugin](http://docs.fluentd.org/articles/out_copy) +(英語)で複製することもできます。 -h2. インストール +インストール +------------ Rubyのgemとしてfluent-plugin-groongaを提供しています。 そのため、インストールは次のコマンドを実行するだけで完了します。 -<pre> -% gem install fluent-plugin-groonga -</pre> + % gem install fluent-plugin-groonga -また、fluent-plugin-groongaもgroongaや関連プロダクトと同じく、 "GitHubにてソースコードが公開":https://github.com/groonga/fluent-plugin-groonga/ されています。 +また、fluent-plugin-groongaもgroongaや関連プロダクトと同じく、 +[GitHubにてソースコードが公開](https://github.com/groonga/fluent-plugin-groonga/) +されています。 -h2. ドキュメント +ドキュメント +------------ -"fluent-plugin-groongaのドキュメント":http://groonga.org/fluent-plugin-groonga/ja/ には、 "具体的なレプリケーションの構成の仕方":http://groonga.org/fluent-plugin-groonga/ja/file.constitution.html や "設定の仕方":http://groonga.org/fluent-plugin-groonga/ja/file.configuration.html が掲載されています。(なお、すべて日本語で書かれています。) +[fluent-plugin-groongaのドキュメント](http://groonga.org/fluent-plugin-groonga/ja/) +には、 +[具体的なレプリケーションの構成の仕方](http://groonga.org/fluent-plugin-groonga/ja/file.constitution.html) +や +[設定の仕方](http://groonga.org/fluent-plugin-groonga/ja/file.configuration.html) +が掲載されています。(なお、すべて日本語で書かれています。) このドキュメントを参考に実際にレプリケーションを試してみてください! -なお、問題の報告や必要な機能の提案については、groongaのメーリングリスト "groonga-dev":http://lists.sourceforge.jp/mailman/listinfo/groonga-dev やGitHubでのpull requestで受け付けています。何かありましたらこちらもご活用ください! +なお、問題の報告や必要な機能の提案については、groongaのメーリングリスト +[groonga-dev](http://lists.sourceforge.jp/mailman/listinfo/groonga-dev) +やGitHubでのpull +requestで受け付けています。何かありましたらこちらもご活用ください! Added: ja/_posts/2013-01-08-release.md (+61 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-01-08-release.md 2016-02-07 10:50:24 +0900 (3fa26ac) @@ -0,0 +1,61 @@ +--- +layout: post.ja +title: groonga 2.1.1リリース +description: groonga 2.1.1をリリースしました! +--- + +先月12/29にgroonga +2.1.0をリリースしましたが、その直後に2.1.1をリリースしました。 +このリリースはバグフィックスリリースで、 `KEY_NORMALIZE` +関連の深刻なバグを修正しました。 + +groonga 2.1.1リリース +--------------------- + +2012-12-29に [groonga 2.1.1](/ja/docs/news.html#release-2-1-1) +をリリースしました。 + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) +2.1.0からの変更点は [2.1.1リリース +2012/12/29](/ja/docs/news.html#release-2-1-1) をご覧ください。 + +今回のリリースはバグフィックスリリースです。次に修正されたバグについて説明します。 + +### KEY_NORMALIZE関連の情報が失われるバグについて + +1つ前のバージョンである2.1.0には、2.0.9以前で作成したデータベースを開くと、データベース中の +`KEY_NORMALIZE` 関連の情報が失われてしまうバグがありました。( +`KEY_NORMALIZE` を使っていないデータベースでは問題ありません。) +`KEY_NORMALIZE` は +[table_createコマンドのflagsオプション](/ja/docs/reference/commands/table_create.html#flags) +に指定する値です。2.1.0から `--normalizer` +オプションが追加されたことにともなって非推奨になり、代わりに +`--normlizer` オプションに `NormalizerAuto` +を指定するようになりました。 +この変更によって、データベース内のテーブルの `flags` オプションに +`KEY_NORMALIZE` オプションが指定されていた場合は、データベースを開く際に +`--normalizer` オプションに `NormalizerAuto` が指定されたように `flags` +の値をgroonga内部で修正するようにしました。しかし、この時の処理に不具合があり、 +`flags` の値が正しく修正されていませんでした。そのため `KEY_NORMALIZE` +が設定されてないとみなしてしまい、情報が消えてしまう結果になりました。 + +このバグを、2.1.1では修正しました。もし、2.1.0を使用している場合はアップデートして2.1.1を利用するようにしてください。 + +### 2.0.9以前のデータベースを開く際の注意点 + +`--normalizer` +オプションの追加にともなって、2.0.9以前のgroongaで作成したデータベースを開く際に注意点があります。 +`--normalizer` オプションの副作用により、1度でも2.0.9以前( +`--normalizer` +オプションがサポートされる前)のgroongaで作成したデータベースを開くと、2.0.9以前のgroongaではデータベースを開けなくなります。 +複数のバージョンのgroongaを同時に使わないようにご留意をお願いします。 + +### さいごに + +2.1.0では、他にもコマンドリストでの継続行サポートや、 `snippet_html()` +関数での引数への式のサポートなど、いろいろ改善が行われました。 +詳しくは [2.1.0リリース時の変更点](/ja/docs/news.html#release-2-1-0) +をご覧ください。 + +それでは、groongaを使ってガンガン検索してください! Deleted: ja/_posts/2013-01-08-release.textile (+0 -38) 100644 =================================================================== --- ja/_posts/2013-01-08-release.textile 2016-02-07 10:35:40 +0900 (15ab330) +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: post.ja -title: groonga 2.1.1リリース -description: groonga 2.1.1をリリースしました! ---- - -先月12/29にgroonga 2.1.0をリリースしましたが、その直後に2.1.1をリリースしました。 -このリリースはバグフィックスリリースで、 @KEY_NORMALIZE@ 関連の深刻なバグを修正しました。 - -h2. groonga 2.1.1リリース - -2012-12-29に "groonga 2.1.1":/ja/docs/news.html#release-2-1-1 をリリースしました。 - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html -2.1.0からの変更点は "2.1.1リリース 2012/12/29":/ja/docs/news.html#release-2-1-1 をご覧ください。 - -今回のリリースはバグフィックスリリースです。次に修正されたバグについて説明します。 - -h3. KEY_NORMALIZE関連の情報が失われるバグについて - -1つ前のバージョンである2.1.0には、2.0.9以前で作成したデータベースを開くと、データベース中の @KEY_NORMALIZE@ 関連の情報が失われてしまうバグがありました。( @KEY_NORMALIZE@ を使っていないデータベースでは問題ありません。) - �� KEY_NORMALIZE@ は "table_createコマンドのflagsオプション":/ja/docs/reference/commands/table_create.html#flags に指定する値です。2.1.0から @--normalizer@ オプションが追加されたことにともなって非推奨になり、代わりに @--normlizer@ オプションに @NormalizerAuto@ を指定するようになりました。 -この変更によって、データベース内のテーブルの @flags@ オプションに @KEY_NORMALIZE@ オプションが指定されていた場合は、データベースを開く際に @--normalizer@ オプションに @NormalizerAuto@ が指定されたように @flags@ の値をgroonga内部で修正するようにしました。しかし、この時の処理に不具合があり、 @flags@ の値が正しく修正されていませんでした。そのため @KEY_NORMALIZE@ が設定されてないとみなしてしまい、情報が消えてしまう結果になりました。 - -このバグを、2.1.1では修正しました。もし、2.1.0を使用している場合はアップデートして2.1.1を利用するようにしてください。 - -h3. 2.0.9以前のデータベースを開く際の注意点 - - �� --normalizer@ オプションの追加にともなって、2.0.9以前のgroongaで作成したデータベースを開く際に注意点があります。 - �� --normalizer@ オプションの副作用により、1度でも2.0.9以前( @--normalizer@ オプションがサポートされる前)のgroongaで作成したデータベースを開くと、2.0.9以前のgroongaではデータベースを開けなくなります。 -複数のバージョンのgroongaを同時に使わないようにご留意をお願いします。 - -h3. さいごに - -2.1.0では、他にもコマンドリストでの継続行サポートや、 @snippet_html()@ 関数での引数への式のサポートなど、いろいろ改善が行われました。 -詳しくは "2.1.0リリース時の変更点":/ja/docs/news.html#release-2-1-0 をご覧ください。 - -それでは、groongaを使ってガンガン検索してください! Added: ja/_posts/2013-01-29-release.md (+144 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-01-29-release.md 2016-02-07 10:50:24 +0900 (a38aa53) @@ -0,0 +1,144 @@ +--- +layout: post.ja +title: groonga 2.1.2リリース +description: groonga 2.1.2をリリースしました! +--- + +今日は2013年最初の肉の日ですね。 + +groonga 2.1.2リリース +--------------------- + +[groonga 2.1.2](/ja/docs/news.html#release-2-1-2) をリリースしました! + +今回のリリースの主なトピックは3つあります。 + +- 複数のquery()のサポート +- groonga-tokenizer-mecabパッケージと同時に辞書のインストールをサポート +- Fedora 18のサポート + +それぞれの環境毎のインストール方法: +[インストール](/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のパッケージの提供は行いません。 + +インストール手順は [Fedora +18](http://groonga.org/ja/docs/install/fedora.html#fedora-18) +を参照してください。 + +### さいごに + +2.1.1からの詳細な変更点は [2.1.2リリース +2013/01/29](/ja/docs/news.html#release-2-1-2) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2013-01-29-release.textile (+0 -150) 100644 =================================================================== --- ja/_posts/2013-01-29-release.textile 2016-02-07 10:35:40 +0900 (646bc4b) +++ /dev/null @@ -1,150 +0,0 @@ ---- -layout: post.ja -title: groonga 2.1.2リリース -description: groonga 2.1.2をリリースしました! ---- - -今日は2013年最初の肉の日ですね。 - -h2. groonga 2.1.2リリース - -"groonga 2.1.2":/ja/docs/news.html#release-2-1-2 をリリースしました! - -今回のリリースの主なトピックは3つあります。 - -* 複数のquery()のサポート -* groonga-tokenizer-mecabパッケージと同時に辞書のインストールをサポート -* Fedora 18のサポート - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -h3. 複数のquery()のサポート - -今回のリリースでは、従来 @--match_columns@ と @--query@ とで個別に指定していたカラムとキーワードを @--filter@ にquery()を使うことで、まとめて指定することができるようになりました。 - -ユーザ情報のテーブルのnameカラムからaliceを全文検索するクエリを例として示します。(nameカラムで合致したデータに対する重みづけとして10を指定します) - -例で使うテーブルのスキーマは以下の通りです。 - -<pre> - 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 -</pre> - -例で使うテーブルのデータは以下の通りです。 - -<pre> - 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 ..."}, - ] -</pre> - -従来通り @--match_columns@ と @--query@ を組みあわせることで、以下のように書けます。(nameカラムに対し重みづけを行っています) - -<pre> - select Users \ - --output_columns name,_score \ - --match_columns "name * 10" \ - --query alice -</pre> - -これをquery()を使うことで @--filter@ にまとめて書くことができるようになります。 - -<pre> - select Users \ - --output_columns name,_score \ - --filter 'query("name * 10", "alice")' -</pre> - -これだけだとあまりありがたみがないかも知れません。ではいくつかキーワードが与えられていて、そのキーワードに異なる重みづけをして全文検索を行いたいときにはどうなるでしょうか。 - - �� --query@ と @--match_columns@ の組み合わせの場合、個々のキーワードに対しての重みづけはできません。 - -<pre> - select Users \ - --output_columns name,memo,_score \ - --match_columns "memo * 10" --query "memo:@groonga OR memo:@mroonga OR memo:@user" \ - --sortby -_score -</pre> - -一方、query()関数を使うと、個別のキーワードについて重みづけを行うことができます。 - -<pre> - select Users \ - --output_columns name,memo,_score \ - --filter 'query("memo * 10", "groonga") || query("memo * 20", "mroonga") || query("memo * 1", "user")' \ - --sortby -_score -</pre> - -最初のクエリの結果ではgroongaもmroongaも等価ですが、 - -<pre> - [ - ["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] -</pre> - -次のクエリの結果では重みづけを行っているのでmroongaがより上位に来ていることがわかります。 - -<pre> - [ - ["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] -</pre> - -このようにquery()を使うことで、より望ましい検索結果を得られるようになりました。 - -h3. groonga-tokenizer-mecabパッケージと同時に辞書のインストールをサポート - -今回のリリースでは、groonga-tokenizer-mecabのインストール時にまだMeCabの辞書がインストールされていない場合、一緒にインストールするようにしました。 - -以下の手順で、groonga-tokenizer-mecabをインストールするとMeCabの辞書がインストールされます。 - -Debian/Ubuntuの場合:: -<pre> - % sudo apt-get install -y groonga-tokenizer-mecab -</pre> - -CentOS/Fedoraの場合:: -<pre> - % sudo yum install -y groonga-tokenizer-mecab -</pre> - -従来、MeCabの辞書についてはどの辞書を使うかについてユーザさんの選択にまかせていたため、特に依存関係をパッケージに含めていませんでしたが、groongaのインストールで初めてMeCabをインストールする場合の利便性を考慮してこのようにしました。 - -なお、すでにMeCabの辞書をインストールしている場合にはそのままインストール済みの辞書を使うようになっています。 - -h2. Fedora 18のサポート - -今回のリリースでは2013/01/15にリリースされたFedora 18のサポートを追加しました。 -Fedora 18のサポートに伴ない、Fedora 17のパッケージの提供は行いません。 - -インストール手順は "Fedora 18":http://groonga.org/ja/docs/install/fedora.html#fedora-18 を参照してください。 - -h3. さいごに - -2.1.1からの詳細な変更点は "2.1.2リリース 2013/01/29":/ja/docs/news.html#release-2-1-2 を確認してください。 - -それでは、groongaでガンガン検索してください! Added: ja/_posts/2013-02-09-release.md (+78 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-02-09-release.md 2016-02-07 10:50:24 +0900 (90be2f6) @@ -0,0 +1,78 @@ +--- +layout: post.ja +title: groonga 3.0.0リリース +description: groonga 3.0.0をリリースしました! +--- + +今日は年に1度の記念すべき肉の日(2/9)ですね。 + +はじめに、利用事例の記事を書いてくれる人募集のお知らせです。 + +これまでも、groonga.orgにて [利用事例](http://groonga.org/ja/users/) +を紹介してきましたが、それとは別に、 +http://gihyo.jp/にgroonga関連の記事を書くという取り組みもはじめようかと検討しています。 +まだgroongaを知らない人にもWeb記事を通じて知ってもらいたいというのが動機です。 + +詳細は +[groonga普及のための協力のお願い](http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html) +を参照してください。実際に使っているユーザーのみなさんに書いてもらえたらいいなぁと思っています! + +groonga 3.0.0リリース +--------------------- + +昨年2月9日以来のメジャーアップデートである [groonga +3.0.0](/ja/docs/news.html#release-3-0-0) をリリースしました! + +今回のリリースでメジャーバージョンがあがって3.0.0となっています! +メジャーバージョンはあがりましたが、データベースのファイル形式は互換性があるのでデータベースを作りなおす必要はありません。 + +先月のリリースから間もないので、直接ユーザさんに影響するような大きな変更は入っていませんが、mroongaのリリースに必要な機能が入ったので、mroongaと足並みを揃えて3.0.0をリリースすることにしました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +前回のメジャーアップデート以降、毎月定期的にリリースを重ねてきました。 + +毎月のリリースを継続することで、毎月29日はgroonga,mroongaのリリースがあるよ、というのを知ってもらえるようになってきました。 + +今回のメジャーバージョンアップにあたって2.0.0のリリース以降、どんな変更が入ったのか振り返ってみたいと思います。 + +- ロゴの一新 (2.0.1) +- Ubuntu 12.04 (Precise Pangolin)サポート (2.0.2) +- 類似文書検索のサポート (2.0.2) +- 管理画面にサジェスト機能用ページを追加 (2.0.2) +- CMakeビルド対応 (2.0.2/2.0.3) +- nginxベースのHTTPサーバーを実験的に追加 (2.0.4) +- 位置情報から距離を計算する組み込み関数(geo_distance)の改善 (2.0.4) +- Travis CI の統合に関するドキュメントを追加 (2.0.4) +- Fedora 17サポート (2.0.5) +- 近傍検索を行う 'column *N "word1 word2 ..."' 構文をサポート (2.0.5) +- groonga-httpdの機能強化(パスのカスタマイズや複数DBのサポート) (2.0.5) +- 特定の語句を含まないレコードの検索をサポート (2.0.5) +- groonga-httpdでhttp_rewrite_moduleのサポート +- groonga-httpdでのPOSTによるloadコマンドのサポート (2.0.7) +- サーバーパッケージ構成と使用ポートの見直し (2.0.7) +- min/max関数のサポート (2.0.7) +- クエリ展開のプラグインによるカスタマイズのサポート (2.0.8) +- Ubuntu 12.10 (Quantal Quetzal)をサポート (2.0.8) +- snippet_html()関数の実験的なサポート (2.0.9) +- インデックスを使った指定範囲の高速な検索をサポート (2.0.9) +- インデックスにより関連付けられたテーブル間のネストしたインデックス検索のサポート (2.1.0) +- 正規化プラグインをサポート (2.1.0) +- 複数のquery()のサポート (2.1.2) +- 範囲検索を カラムインデックスによる関連テーブルをまたぐ検索 + でもサポート。 (2.1.2) +- Fedora 18のサポート (2.1.2) + +ロゴを一新し、リリースをgroongaチーム体制で行うようになりました。 +目玉となる各種新規機能追加ももちろんですが、サーバー用途向けに設定済みのパッケージを提供するようになり、導入しやすくなったのもポイントです。 + +各リリースではユーザさんからの報告をもとにバグ修正や改善を行うことができました。ありがとうございます。 +groongaをもっと良くしていくために、これからも宜くおねがいします! + +### さいごに + +2.1.2からの詳細な変更点は [3.0.0リリース +2013/01/29](/ja/docs/news.html#release-3-0-0) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2013-02-09-release.textile (+0 -69) 100644 =================================================================== --- ja/_posts/2013-02-09-release.textile 2016-02-07 10:35:40 +0900 (66324bc) +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: post.ja -title: groonga 3.0.0リリース -description: groonga 3.0.0をリリースしました! ---- - -今日は年に1度の記念すべき肉の日(2/9)ですね。 - -はじめに、利用事例の記事を書いてくれる人募集のお知らせです。 - -これまでも、groonga.orgにて "利用事例":http://groonga.org/ja/users/ を紹介してきましたが、それとは別に、 http://gihyo.jp/にgroonga関連の記事を書くという取り組みもはじめようかと検討しています。 -まだgroongaを知らない人にもWeb記事を通じて知ってもらいたいというのが動機です。 - -詳細は "groonga普及のための協力のお願い":http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html を参照してください。実際に使っているユーザーのみなさんに書いてもらえたらいいなぁと思っています! - -h2. groonga 3.0.0リリース - -昨年2月9日以来のメジャーアップデートである "groonga 3.0.0":/ja/docs/news.html#release-3-0-0 をリリースしました! - -今回のリリースでメジャーバージョンがあがって3.0.0となっています! -メジャーバージョンはあがりましたが、データベースのファイル形式は互換性があるのでデータベースを作りなおす必要はありません。 - -先月のリリースから間もないので、直接ユーザさんに影響するような大きな変更は入っていませんが、mroongaのリリースに必要な機能が入ったので、mroongaと足並みを揃えて3.0.0をリリースすることにしました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -前回のメジャーアップデート以降、毎月定期的にリリースを重ねてきました。 - -毎月のリリースを継続することで、毎月29日はgroonga,mroongaのリリースがあるよ、というのを知ってもらえるようになってきました。 - -今回のメジャーバージョンアップにあたって2.0.0のリリース以降、どんな変更が入ったのか振り返ってみたいと思います。 - -* ロゴの一新 (2.0.1) -* Ubuntu 12.04 (Precise Pangolin)サポート (2.0.2) -* 類似文書検索のサポート (2.0.2) -* 管理画面にサジェスト機能用ページを追加 (2.0.2) -* CMakeビルド対応 (2.0.2/2.0.3) -* nginxベースのHTTPサーバーを実験的に追加 (2.0.4) -* 位置情報から距離を計算する組み込み関数(geo_distance)の改善 (2.0.4) -* Travis CI の統合に関するドキュメントを追加 (2.0.4) -* Fedora 17サポート (2.0.5) -* 近傍検索を行う 'column *N "word1 word2 ..."' 構文をサポート (2.0.5) -* groonga-httpdの機能強化(パスのカスタマイズや複数DBのサポート) (2.0.5) -* 特定の語句を含まないレコードの検索をサポート (2.0.5) -* groonga-httpdでhttp_rewrite_moduleのサポート -* groonga-httpdでのPOSTによるloadコマンドのサポート (2.0.7) -* サーバーパッケージ構成と使用ポートの見直し (2.0.7) -* min/max関数のサポート (2.0.7) -* クエリ展開のプラグインによるカスタマイズのサポート (2.0.8) -* Ubuntu 12.10 (Quantal Quetzal)をサポート (2.0.8) -* snippet_html()関数の実験的なサポート (2.0.9) -* インデックスを使った指定範囲の高速な検索をサポート (2.0.9) -* インデックスにより関連付けられたテーブル間のネストしたインデックス検索のサポート (2.1.0) -* 正規化プラグインをサポート (2.1.0) -* 複数のquery()のサポート (2.1.2) -* 範囲検索を カラムインデックスによる関連テーブルをまたぐ検索 でもサポート。 (2.1.2) -* Fedora 18のサポート (2.1.2) - -ロゴを一新し、リリースをgroongaチーム体制で行うようになりました。 -目玉となる各種新規機能追加ももちろんですが、サーバー用途向けに設定済みのパッケージを提供するようになり、導入しやすくなったのもポイントです。 - -各リリースではユーザさんからの報告をもとにバグ修正や改善を行うことができました。ありがとうございます。 -groongaをもっと良くしていくために、これからも宜くおねがいします! - -h3. さいごに - -2.1.2からの詳細な変更点は "3.0.0リリース 2013/01/29":/ja/docs/news.html#release-3-0-0 を確認してください。 - -それでは、groongaでガンガン検索してください! Renamed: ja/_posts/2013-02-25-oss-incentive-award.md (+9 -2) 55% =================================================================== --- ja/_posts/2013-02-25-oss-incentive-award.textile 2016-02-07 10:35:40 +0900 (e5aa9d4) +++ ja/_posts/2013-02-25-oss-incentive-award.md 2016-02-07 10:50:24 +0900 (1eb5bca) @@ -5,10 +5,17 @@ description: groonga開発チームが第8回OSS奨励賞を受賞しました --- h2. groonga開発チームが第8回OSS奨励賞を受賞しました! -groonga開発チームが2月22日に "第8回日本OSS奨励賞を受賞しました!":http://www.ossforum.jp/ossaward8th2 +groonga開発チームが2月22日に +[第8回日本OSS奨励賞を受賞しました!](http://www.ossforum.jp/ossaward8th2) 上記サイトによると、「日本OSS奨励賞」は過去1年間にOSSの開発や普及に顕著な活躍をした個人ないしグループを表彰するもので、今回は4回目となるそうです。 groonga開発チームは、毎月29日にリリースをする「肉の日リリース」を続けていること、またメーリングリストやセミナーでユーザーとの交流を拡大していることが評価され、受賞しました。 -groongaのメーリングリストは "groonga-dev":http://sourceforge.jp/projects/groonga/lists/archive/dev/ (日本語)と "groonga-talk":http://sourceforge.net/mailarchive/forum.php?forum_name=groonga-talk (英語)の2つがあります。これらメーリングリストでは、ユーザーさんからの質問や提案にgroonga開発チームが答えています。また、セミナーとしては去年11/29(いい肉の日)に3回目の「 "全文検索エンジンgroongaを囲む夕べ":http://atnd.org/events/33070 」を開催し、ユーザーさんから実際にどうgroongaを使っているかを発表していただきました。 +groongaのメーリングリストは +[groonga-dev](http://sourceforge.jp/projects/groonga/lists/archive/dev/) +(日本語)と +[groonga-talk](http://sourceforge.net/mailarchive/forum.php?forum_name=groonga-talk) +(英語)の2つがあります。これらメーリングリストでは、ユーザーさんからの質問や提案にgroonga開発チームが答えています。また、セミナーとしては去年11/29(いい肉の日)に3回目の「 +[全文検索エンジンgroongaを囲む夕べ](http://atnd.org/events/33070) +」を開催し、ユーザーさんから実際にどうgroongaを使っているかを発表していただきました。 受賞そのものも非常にうれしいですが、個人ではなく、groonga開発チーム全体で受賞できたことをうれしく思っています。 これからもgroonga開発チームでは精力的に開発を続けていきますので、今後ともご協力お願いします! Added: ja/_posts/2013-02-28-release.md (+194 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-02-28-release.md 2016-02-07 10:50:24 +0900 (b5b8a5f) @@ -0,0 +1,194 @@ +--- +layout: post.ja +title: groonga 3.0.1リリース +description: groonga 3.0.1をリリースしました! +--- + +今月は29日がないので28日リリースです。 + +groonga 3.0.1リリース +--------------------- + +[groonga 3.0.1](/ja/docs/news.html#release-3-0-1) をリリースしました! + +今月2/9に肉の日記念でメジャーバージョンアップデートしたばかりなので、直接ユーザさんに影響するような大きな変更は入っていませんが、3.0.0には間に合わなかった不具合修正などが入っています。 + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +はじめに、利用事例の記事を書いてくれる人募集のお知らせです。(再度) + +これまでも、groonga.orgにて [利用事例](http://groonga.org/ja/users/) +を紹介してきましたが、それとは別に、 [gihyo.jp](http://gihyo.jp/) +にてgroonga関連の記事を書くという企画が進行しています。 + +まだgroongaを知らない人にもWeb記事を通じて知ってもらいたいというのが動機です。 + +詳細は +[groonga普及のための協力のお願い](http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html) +を参照してください。実際に使っているユーザーのみなさんに書いてもらえたらいいなぁと思っています! + +すでに何人かの方に応募いただいていますが、まだまだ募集中です。 + +### loadコマンドによりBoolであっても参照カラムに設定可能 + +これまで、loadコマンドでテーブルにレコードを追加する場合に参照カラムがBool型のキーのテーブルを参照していると、値を正しく設定することができませんでした。 + +例えば以下のようなスキーマとデータを投入してみます。 + + table_create Bools TABLE_HASH_KEY Bool + + table_create Entries TABLE_HASH_KEY ShortText + column_create Entries published COLUMN_SCALAR Bools + + load --table Entries + [ + {"_key": "Special news!", "published": true}, + {"_key": "Supprise news!", "published": false} + ] + +投入した結果確認するためにselect +Entriesを実行すると以下のようになります。 + + [ + [ + [2], + [ + ["_id","UInt32"], + ["_key","ShortText"], + ["published","Bools"] + ], + [1,"Special news!",false], + [2,"Supprise news!",false] + ] + ] + +loadしたはずの値が設定されていないことがわかります。 + +Boolsテーブルの内容を確認すると実際に値が設定されていないことがわかります。 + + [ + [ + [0], + [ + ["_id","UInt32"], + ["_key","Bool"] + ] + ] + ] + +これが、今回のリリースで修正され、loadコマンドでBool型のキーのテーブルを参照している参照カラムに対しても正しく機能するようになりました。 + +select Entriesを実行すると以下の結果が返ってきます。 + + [ + [ + [2], + [ + ["_id","UInt32"], + ["_key","ShortText"], + ["published","Bools"] + ], + [1,"Special news!",true], + [2,"Supprise news!",false] + ] + ] + +select +Boolsを実行すると参照カラムで指定した値が設定されていることがわかります。 + + [ + [ + [0], + [ + ["_id","UInt32"], + ["_key","Bool"] + ], + [1,true], + [2,false] + ] + ] + +### ネストしたインデックスに対してもAND検索可能に + +今回のリリースでは、ネストしたインデックスに対してもAND検索が可能になりました。 + +どんな風になったかをサンプルで示します。 + +以下は例で使うスキーマとデータです。 + + table_create Users TABLE_PAT_KEY ShortText + column_create Users birthday COLUMN_SCALAR Time + + table_create Files TABLE_PAT_KEY ShortText + column_create Files owner COLUMN_SCALAR Users + + column_create Users files_owner_index COLUMN_INDEX Files owner + + table_create Birthdays TABLE_PAT_KEY Time + column_create Birthdays users_birthday COLUMN_INDEX Users birthday + + load --table Users + [ + {"_key": "Alice", "birthday": "1992-02-09 00:00:00"}, + {"_key": "Bob", "birthday": "1988-01-04 00:00:00"}, + {"_key": "Carlos", "birthday": "1982-12-29 00:00:00"} + ] + + load --table Files + [ + {"_key": "/home/alice/.zshrc", "owner": "Alice"}, + {"_key": "/home/bob/.bashrc", "owner": "Bob"}, + {"_key": "/home/calros/public_html/index.html", "owner": "Carlos"} + ] + +ファイルの所有者の誕生日に応じて特定のファイルを絞り込む場合を考えてみます。 + +カラムインデックスを張ってあるので、FilesテーブルとUsersテーブルはネストしたインデックスとして関連付けられています。 + +以下のようなクエリで絞り込むことができると思うかも知れません。3.0.0で実行すると以下の結果になります。 + + select Files + --filter 'owner.birthday >= "1988-01-04 00:00:00" && owner.birthday < "1992-02-09 00:00:00"' + --output_columns '_key, owner, owner.birthday' + + [ + [ + [2], + [ + ["_key","ShortText"], + ["owner","Users"], + ["owner.birthday","Time"] + ], + ["/home/bob/.bashrc","Bob",568220400.0], + ["/home/alice/.zshrc","Alice",697561200.0] + ] + ] + +この結果をみると、最初の条件のみで検索していて、&&以降の条件はまったく無視されているように見えます。(Bobがヒットしているのは正しいが、Aliceは対象外になっていないといけない) + +これは従来AND検索はできず、最初の条件のみ評価されてしまっていたのが原因です。 + +今回のリリースではAND検索が可能になったので、きちんと絞り込むことができるようになりました。 + + [ + [ + [1], + [ + ["_key","ShortText"], + ["owner","Users"], + ["owner.birthday","Time"] + ], + ["/home/bob/.bashrc","Bob",568220400.0] + ] + ] + +`&& owner.birthday < "1992-02-09 00:00:00"` +部分もきちんと適用して結果を絞り込んでいることがわかります。 + +### さいごに + +3.0.0からの詳細な変更点は [3.0.1リリース +2013/02/28](/ja/docs/news.html#release-3-0-1) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2013-02-28-release.textile (+0 -205) 100644 =================================================================== --- ja/_posts/2013-02-28-release.textile 2016-02-07 10:35:40 +0900 (0a58f98) +++ /dev/null @@ -1,205 +0,0 @@ ---- -layout: post.ja -title: groonga 3.0.1リリース -description: groonga 3.0.1をリリースしました! ---- - -今月は29日がないので28日リリースです。 - -h2. groonga 3.0.1リリース - -"groonga 3.0.1":/ja/docs/news.html#release-3-0-1 をリリースしました! - -今月2/9に肉の日記念でメジャーバージョンアップデートしたばかりなので、直接ユーザさんに影響するような大きな変更は入っていませんが、3.0.0には間に合わなかった不具合修正などが入っています。 - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - - -はじめに、利用事例の記事を書いてくれる人募集のお知らせです。(再度) - -これまでも、groonga.orgにて "利用事例":http://groonga.org/ja/users/ を紹介してきましたが、それとは別に、 "gihyo.jp":http://gihyo.jp/ にてgroonga関連の記事を書くという企画が進行しています。 - -まだgroongaを知らない人にもWeb記事を通じて知ってもらいたいというのが動機です。 - -詳細は "groonga普及のための協力のお願い":http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html を参照してください。実際に使っているユーザーのみなさんに書いてもらえたらいいなぁと思っています! - -すでに何人かの方に応募いただいていますが、まだまだ募集中です。 - - -h3. loadコマンドによりBoolであっても参照カラムに設定可能 - - -これまで、loadコマンドでテーブルにレコードを追加する場合に参照カラムがBool型のキーのテーブルを参照していると、値を正しく設定することができませんでした。 - -例えば以下のようなスキーマとデータを投入してみます。 - -<pre> - table_create Bools TABLE_HASH_KEY Bool - - table_create Entries TABLE_HASH_KEY ShortText - column_create Entries published COLUMN_SCALAR Bools - - load --table Entries - [ - {"_key": "Special news!", "published": true}, - {"_key": "Supprise news!", "published": false} - ] -</pre> - -投入した結果確認するためにselect Entriesを実行すると以下のようになります。 - -<pre> - [ - [ - [2], - [ - ["_id","UInt32"], - ["_key","ShortText"], - ["published","Bools"] - ], - [1,"Special news!",false], - [2,"Supprise news!",false] - ] - ] -</pre> - -loadしたはずの値が設定されていないことがわかります。 - -Boolsテーブルの内容を確認すると実際に値が設定されていないことがわかります。 - -<pre> - [ - [ - [0], - [ - ["_id","UInt32"], - ["_key","Bool"] - ] - ] - ] -</pre> - -これが、今回のリリースで修正され、loadコマンドでBool型のキーのテーブルを参照している参照カラムに対しても正しく機能するようになりました。 - -select Entriesを実行すると以下の結果が返ってきます。 - -<pre> - [ - [ - [2], - [ - ["_id","UInt32"], - ["_key","ShortText"], - ["published","Bools"] - ], - [1,"Special news!",true], - [2,"Supprise news!",false] - ] - ] -</pre> - -select Boolsを実行すると参照カラムで指定した値が設定されていることがわかります。 - -<pre> - [ - [ - [0], - [ - ["_id","UInt32"], - ["_key","Bool"] - ], - [1,true], - [2,false] - ] - ] -</pre> - -h3. ネストしたインデックスに対してもAND検索可能に - -今回のリリースでは、ネストしたインデックスに対してもAND検索が可能になりました。 - -どんな風になったかをサンプルで示します。 - -以下は例で使うスキーマとデータです。 - -<pre> - table_create Users TABLE_PAT_KEY ShortText - column_create Users birthday COLUMN_SCALAR Time - - table_create Files TABLE_PAT_KEY ShortText - column_create Files owner COLUMN_SCALAR Users - - column_create Users files_owner_index COLUMN_INDEX Files owner - - table_create Birthdays TABLE_PAT_KEY Time - column_create Birthdays users_birthday COLUMN_INDEX Users birthday - - load --table Users - [ - {"_key": "Alice", "birthday": "1992-02-09 00:00:00"}, - {"_key": "Bob", "birthday": "1988-01-04 00:00:00"}, - {"_key": "Carlos", "birthday": "1982-12-29 00:00:00"} - ] - - load --table Files - [ - {"_key": "/home/alice/.zshrc", "owner": "Alice"}, - {"_key": "/home/bob/.bashrc", "owner": "Bob"}, - {"_key": "/home/calros/public_html/index.html", "owner": "Carlos"} - ] -</pre> - -ファイルの所有者の誕生日に応じて特定のファイルを絞り込む場合を考えてみます。 - -カラムインデックスを張ってあるので、FilesテーブルとUsersテーブルはネストしたインデックスとして関連付けられています。 - -以下のようなクエリで絞り込むことができると思うかも知れません。3.0.0で実行すると以下の結果になります。 - -<pre> - select Files \ - --filter 'owner.birthday >= "1988-01-04 00:00:00" && owner.birthday < "1992-02-09 00:00:00"' \ - --output_columns '_key, owner, owner.birthday' - - [ - [ - [2], - [ - ["_key","ShortText"], - ["owner","Users"], - ["owner.birthday","Time"] - ], - ["/home/bob/.bashrc","Bob",568220400.0], - ["/home/alice/.zshrc","Alice",697561200.0] - ] - ] -</pre> - -この結果をみると、最初の条件のみで検索していて、&&以降の条件はまったく無視されているように見えます。(Bobがヒットしているのは正しいが、Aliceは対象外になっていないといけない) - -これは従来AND検索はできず、最初の条件のみ評価されてしまっていたのが原因です。 - -今回のリリースではAND検索が可能になったので、きちんと絞り込むことができるようになりました。 - -<pre> - [ - [ - [1], - [ - ["_key","ShortText"], - ["owner","Users"], - ["owner.birthday","Time"] - ], - ["/home/bob/.bashrc","Bob",568220400.0] - ] - ] -</pre> - - @&& owner.birthday < "1992-02-09 00:00:00"@ 部分もきちんと適用して結果を絞り込んでいることがわかります。 - - - -h3. さいごに - -3.0.0からの詳細な変更点は "3.0.1リリース 2013/02/28":/ja/docs/news.html#release-3-0-1 を確認してください。 - -それでは、groongaでガンガン検索してください! Renamed: ja/_posts/2013-03-21-satori.md (+9 -4) 58% =================================================================== --- ja/_posts/2013-03-21-satori.textile 2016-02-07 10:35:40 +0900 (ea6b551) +++ ja/_posts/2013-03-21-satori.md 2016-02-07 10:50:24 +0900 (f351be1) @@ -1,15 +1,20 @@ --- layout: post.ja title: 「検索エンジンは妖怪“覚(さとり)”の夢を見るか」公開 -description: 「検索エンジンは妖怪“覚(さとり)”の夢を見るか」というgroongaの作者である森さんが検索エンジンの未来を予想する記事の紹介 +description: +「検索エンジンは妖怪“覚(さとり)”の夢を見るか」というgroongaの作者である森さんが検索エンジンの未来を予想する記事の紹介 --- h2. 「検索エンジンは妖怪“覚(さとり)”の夢を見るか」公開 -先日、groongaの作者である森さんが検索エンジンの未来を予想する記事を「情報の科学と技術」Vol. 63に寄稿しました。その記事が "ガジェット通信":http://getnews.jp/ で公開されたので紹介します。 +先日、groongaの作者である森さんが検索エンジンの未来を予想する記事を「情報の科学と技術」Vol. +63に寄稿しました。その記事が [ガジェット通信](http://getnews.jp/) +で公開されたので紹介します。 記事は前編と後編にわかれています。 -* "検索エンジンは妖怪“覚(さとり)”の夢を見るか【前編】 - ガジェット通信":http://getnews.jp/archives/287318 -* "検索エンジンは妖怪“覚(さとり)”の夢を見るか【後編】 - ガジェット通信":http://getnews.jp/archives/287999 +- [検索エンジンは妖怪“覚(さとり)”の夢を見るか【前編】 - + ガジェット通信](http://getnews.jp/archives/287318) +- [検索エンジンは妖怪“覚(さとり)”の夢を見るか【後編】 - + ガジェット通信](http://getnews.jp/archives/287999) 最後には、何もしなくても知りたいことがわかるような未来になったらどうだろう、はたしてそれはうれしいことだろうか、というところまで言及する大変興味深い内容になっています。検索エンジンのこれまでとこれからに興味のある人はぜひ読んでみてください。参考図書もついているので、興味のある分野についてさらに調べることもできます。 Added: ja/_posts/2013-03-29-release.md (+232 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-03-29-release.md 2016-02-07 10:50:24 +0900 (8f18d3d) @@ -0,0 +1,232 @@ +--- +layout: post.ja +title: groonga 3.0.2リリース +description: groonga 3.0.2をリリースしました! +--- + +今日は肉の日ですね。 + +groonga 3.0.2リリース +--------------------- + +[groonga 3.0.2](/ja/docs/news.html#release-3-0-2) をリリースしました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +はじめに、利用事例の記事を書いてくれる人募集のお知らせです。(再度) + +これまでも、groonga.orgにて [利用事例](http://groonga.org/ja/users/) +を紹介してきましたが、それとは別に、 [gihyo.jp](http://gihyo.jp/) +にてgroonga関連の記事を書くという企画が進行しています。 + +まだgroongaを知らない人にもWeb記事を通じて知ってもらいたいというのが動機です。 + +詳細は +[groonga普及のための協力のお願い](http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html) +を参照してください。実際に使っているユーザーのみなさんに書いてもらえたらいいなぁと思っています! + +すでに何人かの方に応募いただいていますが、まだまだ募集中です。 + +### `sub_filter()` 関数のサポート + +今回のリリースでは `sub_filter()` 関数のサポートを追加しました。 + +どういった場合にこの関数を使うと便利なのかを具体例で紹介します。 + +お題は「ブログエントリの特定のコメントを抽出する」です。 + +この例で使用するスキーマ定義は以下の通りです。 + + table_create Comment TABLE_PAT_KEY UInt32 + column_create Comment name COLUMN_SCALAR ShortText + column_create Comment content COLUMN_SCALAR ShortText + + table_create Blog TABLE_PAT_KEY ShortText + column_create Blog title COLUMN_SCALAR ShortText + column_create Blog content COLUMN_SCALAR ShortText + column_create Blog comments COLUMN_VECTOR Comment + + column_create Comment blog_comment_index COLUMN_INDEX Blog comments + + table_create Lexicon TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram + column_create Lexicon comment_content COLUMN_INDEX|WITH_POSITION Comment content + column_create Lexicon comment_name COLUMN_INDEX|WITH_POSITION Comment name + column_create Lexicon blog_content COLUMN_INDEX|WITH_POSITION Blog content + +BlogテーブルにはCommentテーブルを関連づけています。 +また、全文検索用のLexiconテーブルを用意しています。 + +例で使用するサンプルデータは以下の通りです。 + + load --table Comment + [ + {"_key": 1, "name": "A", "content": "groonga"}, + {"_key": 2, "name": "B", "content": "groonga"}, + {"_key": 3, "name": "C", "content": "rroonga"}, + {"_key": 4, "name": "A", "content": "mroonga"}, + ] + + load --table Blog + [ + {"_key": "groonga's blog", "content": "content of groonga's blog", comments: [1, 2, 3]}, + {"_key": "mroonga's blog", "content": "content of mroonga's blog", comments: [2, 3, 4]}, + {"_key": "rroonga's blog", "content": "content of rroonga's blog", comments: [3]}, + ] + +例えば、Aさんがgroongaについてコメントしたブログエントリのタイトルを抽出したいとしましょう。 +Aさんのコメントは以下のようにして抽出することができます。 + + select Comment --output_columns _key,name,content --query "name:@"A"" + + [ + [2], + [ + ["_key","UInt32"],["name","ShortText"],["content","ShortText"] + ], + [1,"A","groonga"], + [4,"A","mroonga"] + ] + +Aさんはgroongaとmroongaについてコメントしていることがわかります。 +では、AさんがgroongaについてコメントしているエントリをBlogテーブルから探してみましょう。 +まずは、AさんがコメントしているエントリをBlogテーブルから探してみます。 + + select Blog --output_columns _key --filter "comments.name @ "A"" + + [ + [ + [2], + [["_key","ShortText"]], + ["groonga's blog"], + ["mroonga's blog"] + ] + ] + +"groonga's blog"と"mroonga's +blog"に対してコメントしていることがわかりました。 + +では、AさんがgroongaについてコメントしているエントリをBlogテーブルから探してみましょう。 +コメント本文に対する条件を追加して検索してみます。 + + select Blog --output_columns _key --filter "comments.name @ "A" && comments.content @ "groonga"" + + [ + [ + [2], + [["_key","ShortText"]], + ["groonga's blog"], + ["mroonga's blog"] + ] + ] + +条件を追加しているのに、結果は同じになりました。 +"mroonga's +blog"にはAさんがコメントしてはいますが、"groonga"ではなく"mroonga"についてです。 +これは意図した結果ではありません。 + +いったいどういうことなのでしょうか。 + + --filter "comment.name @ "A" && comment.content @ "groonga"" + +実は、上記の条件を処理するときに、groongaでは以下のようにして判定しています。 + +- comment.name @ "A"なものがあるか? => + CommentテーブルにAさんのコメントがあるのでマッチ + +<!-- --> + +- comment.content @ "groonga"なものがあるか? => + Commentテーブルに"groonga"があるのでマッチ + +それぞれどれかひとつでもマッチしているかどうか、を見ています。 +その結果をふまえて、両方をみたしているかで判定しているので、Blogの"mroonga's +blog"エントリが抽出されています。 + +やりたいのは +Aさんがgroongaについてコメントしたエントリを抽出することでした。 +これは、"groonga's blog"だけが抽出されるというのが期待する結果です。 + +具体的に言うとCommentテーブルの以下のコメントデータを含むBlogテーブルのエントリを抽出したいわけです。 + + {"_key": 1, "name": "A", "content": "groonga"}, + +この場合にCommentテーブルのnameカラムとcontentカラムにおいて、どれかひとつでもマッチしているものがあるかどうかで評価されるのは都合が良くありません。 + +こういうときに使えるのが、 `sub_filter()` 関数です。 `comments` +のコンテキストで絞り込むことができます。 + +`sub_filter` +を使うと上記目的に合致するクエリを以下のように書くことができます。 + + select Blog --output_columns _key + --filter 'sub_filter(comments, "name @ "A" && content @ "groonga"")' + +実行結果は以下のようになります。 + + [ + [ + [1], + [["_key","ShortText"]], + ["groonga's blog"], + ] + ] + +これで、意図した通り、Aさんがgroongaについてコメントしているエントリのみを抽出することができました。 + +### `query()` 関数でクエリ展開のサポート + +今回のリリースでは、 `query()` 関数でのクエリ展開をサポートしました。 + +selectコマンドの `--query` ではクエリ展開と重みづけの指定ができます。 +2.1.2のリリースでは複数の `query()` 関数を `select` +コマンドでサポートしたことで、複数のクエリごとに異なる重みづけを指定することができるようになりました。 + +ただし、 `query()` +関数ではクエリ展開できなかったので、アプリケーション側でクエリ展開相当のことをやってから +`query()` 関数に渡さないことには `--query` +と同じようには複数の全文検索を行うことができませんでした。 + +今回のリリースでは、@query()@ 関数でのクエリ展開をサポートしたことで、 +`--query` +でできていたクエリ展開と重みづけを複数の全文検索でも利用できるようになりました。 + +今までは `query()` +関数の構文は以下のようにカラムとクエリを受けつけるものでした。 + + query("MATCH_COLUMNS", "QUERY") + +今回クエリ展開をサポートするために引数を追加し、 `QueryExpanderTSV` +と一緒に使えるようになりました。(置換テーブルを指定することもできます。) + + query("MATCH_COLUMNS", "QUERY", "QueryExpanderTSV") + +QueryExpanderTSVによるクエリ展開については +[QueryExpanderTSV](http://groonga.org/ja/docs/reference/query_expanders/tsv.html) +を参照してください。 + +置換テーブルの例については +[クエリー展開用の引数](http://groonga.org/ja/docs/reference/commands/select.html#query-expansion) +を参照してください。 + +これにより、クエリ展開と重みづけを同時に指定したいものは `--query` +に書かないといけないという制限が緩和されます。 + +例えば、以下のように置換テーブルと同等のことを書かないといけなかったクエリは + + select Users --match_columns "memo * 100" --query "memo:@groonga" + --query_expander Synonyms.synonym + --filter 'query("name * 10", "((...) OR (...) OR (...))")' + +こんな風に自前で展開せずにすむようになります。 + + select Users --match_columns "memo * 100" --query "memo:@groonga" + --query_expander Synonyms.synonym + --filter 'query("name * 10", "...", "Synonyms.synonym")' + +### さいごに + +3.0.1からの詳細な変更点は [3.0.2リリース +2013/03/29](/ja/docs/news.html#release-3-0-2) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2013-03-29-release.textile (+0 -230) 100644 =================================================================== --- ja/_posts/2013-03-29-release.textile 2016-02-07 10:35:40 +0900 (73a79b6) +++ /dev/null @@ -1,230 +0,0 @@ ---- -layout: post.ja -title: groonga 3.0.2リリース -description: groonga 3.0.2をリリースしました! ---- - -今日は肉の日ですね。 - -h2. groonga 3.0.2リリース - -"groonga 3.0.2":/ja/docs/news.html#release-3-0-2 をリリースしました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - - -はじめに、利用事例の記事を書いてくれる人募集のお知らせです。(再度) - -これまでも、groonga.orgにて "利用事例":http://groonga.org/ja/users/ を紹介してきましたが、それとは別に、 "gihyo.jp":http://gihyo.jp/ にてgroonga関連の記事を書くという企画が進行しています。 - -まだgroongaを知らない人にもWeb記事を通じて知ってもらいたいというのが動機です。 - -詳細は "groonga普及のための協力のお願い":http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html を参照してください。実際に使っているユーザーのみなさんに書いてもらえたらいいなぁと思っています! - -すでに何人かの方に応募いただいていますが、まだまだ募集中です。 - - -h3. @sub_filter()@ 関数のサポート - -今回のリリースでは @sub_filter()@ 関数のサポートを追加しました。 - -どういった場合にこの関数を使うと便利なのかを具体例で紹介します。 - -お題は「ブログエントリの特定のコメントを抽出する」です。 - -この例で使用するスキーマ定義は以下の通りです。 - -<pre> - table_create Comment TABLE_PAT_KEY UInt32 - column_create Comment name COLUMN_SCALAR ShortText - column_create Comment content COLUMN_SCALAR ShortText - - table_create Blog TABLE_PAT_KEY ShortText - column_create Blog title COLUMN_SCALAR ShortText - column_create Blog content COLUMN_SCALAR ShortText - column_create Blog comments COLUMN_VECTOR Comment - - column_create Comment blog_comment_index COLUMN_INDEX Blog comments - - table_create Lexicon TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram - column_create Lexicon comment_content COLUMN_INDEX|WITH_POSITION Comment content - column_create Lexicon comment_name COLUMN_INDEX|WITH_POSITION Comment name - column_create Lexicon blog_content COLUMN_INDEX|WITH_POSITION Blog content -</pre> - -BlogテーブルにはCommentテーブルを関連づけています。 -また、全文検索用のLexiconテーブルを用意しています。 - -例で使用するサンプルデータは以下の通りです。 - -<pre> - load --table Comment - [ - {"_key": 1, "name": "A", "content": "groonga"}, - {"_key": 2, "name": "B", "content": "groonga"}, - {"_key": 3, "name": "C", "content": "rroonga"}, - {"_key": 4, "name": "A", "content": "mroonga"}, - ] - - load --table Blog - [ - {"_key": "groonga's blog", "content": "content of groonga's blog", comments: [1, 2, 3]}, - {"_key": "mroonga's blog", "content": "content of mroonga's blog", comments: [2, 3, 4]}, - {"_key": "rroonga's blog", "content": "content of rroonga's blog", comments: [3]}, - ] -</pre> - -例えば、Aさんがgroongaについてコメントしたブログエントリのタイトルを抽出したいとしましょう。 -Aさんのコメントは以下のようにして抽出することができます。 - -<pre> - select Comment --output_columns _key,name,content --query "name:@\"A\"" - - [ - [2], - [ - ["_key","UInt32"],["name","ShortText"],["content","ShortText"] - ], - [1,"A","groonga"], - [4,"A","mroonga"] - ] -</pre> - -Aさんはgroongaとmroongaについてコメントしていることがわかります。 -では、AさんがgroongaについてコメントしているエントリをBlogテーブルから探してみましょう。 -まずは、AさんがコメントしているエントリをBlogテーブルから探してみます。 - -<pre> - select Blog --output_columns _key --filter "comments.name @ \"A\"" - - [ - [ - [2], - [["_key","ShortText"]], - ["groonga's blog"], - ["mroonga's blog"] - ] - ] -</pre> - -"groonga's blog"と"mroonga's blog"に対してコメントしていることがわかりました。 - -では、AさんがgroongaについてコメントしているエントリをBlogテーブルから探してみましょう。 -コメント本文に対する条件を追加して検索してみます。 - -<pre> - select Blog --output_columns _key --filter "comments.name @ \"A\" && comments.content @ \"groonga\"" - - [ - [ - [2], - [["_key","ShortText"]], - ["groonga's blog"], - ["mroonga's blog"] - ] - ] -</pre> - -条件を追加しているのに、結果は同じになりました。 -"mroonga's blog"にはAさんがコメントしてはいますが、"groonga"ではなく"mroonga"についてです。 -これは意図した結果ではありません。 - -いったいどういうことなのでしょうか。 - -<pre>--filter "comment.name @ \"A\" && comment.content @ \"groonga\""</pre> - -実は、上記の条件を処理するときに、groongaでは以下のようにして判定しています。 - -* comment.name @ \"A\"なものがあるか? => CommentテーブルにAさんのコメントがあるのでマッチ - -* comment.content @ \"groonga\"なものがあるか? => Commentテーブルに"groonga"があるのでマッチ - -それぞれどれかひとつでもマッチしているかどうか、を見ています。 -その結果をふまえて、両方をみたしているかで判定しているので、Blogの"mroonga's blog"エントリが抽出されています。 - -やりたいのは Aさんがgroongaについてコメントしたエントリを抽出することでした。 -これは、"groonga's blog"だけが抽出されるというのが期待する結果です。 - -具体的に言うとCommentテーブルの以下のコメントデータを含むBlogテーブルのエントリを抽出したいわけです。 - -<pre> - {"_key": 1, "name": "A", "content": "groonga"}, -</pre> - -この場合にCommentテーブルのnameカラムとcontentカラムにおいて、どれかひとつでもマッチしているものがあるかどうかで評価されるのは都合が良くありません。 - -こういうときに使えるのが、 @sub_filter()@ 関数です。 @comments@ のコンテキストで絞り込むことができます。 - - �� sub_filter@ を使うと上記目的に合致するクエリを以下のように書くことができます。 - -<pre> - select Blog --output_columns _key \ - --filter 'sub_filter(comments, "name @ \\"A\\" && content @ \\"groonga\\"")' -</pre> - -実行結果は以下のようになります。 - -<pre> - [ - [ - [1], - [["_key","ShortText"]], - ["groonga's blog"], - ] - ] -</pre> - -これで、意図した通り、Aさんがgroongaについてコメントしているエントリのみを抽出することができました。 - -h3. @query()@ 関数でクエリ展開のサポート - -今回のリリースでは、 @query()@ 関数でのクエリ展開をサポートしました。 - -selectコマンドの @--query@ ではクエリ展開と重みづけの指定ができます。 -2.1.2のリリースでは複数の @query()@ 関数を @select@ コマンドでサポートしたことで、複数のクエリごとに異なる重みづけを指定することができるようになりました。 - -ただし、 @query()@ 関数ではクエリ展開できなかったので、アプリケーション側でクエリ展開相当のことをやってから @query()@ 関数に渡さないことには @--query@ と同じようには複数の全文検索を行うことができませんでした。 - -今回のリリースでは、@query()@ 関数でのクエリ展開をサポートしたことで、 @--query@ でできていたクエリ展開と重みづけを複数の全文検索でも利用できるようになりました。 - -今までは @query()@ 関数の構文は以下のようにカラムとクエリを受けつけるものでした。 - -<pre> - query("MATCH_COLUMNS", "QUERY") -</pre> - -今回クエリ展開をサポートするために引数を追加し、 @QueryExpanderTSV@ と一緒に使えるようになりました。(置換テーブルを指定することもできます。) - -<pre> - query("MATCH_COLUMNS", "QUERY", "QueryExpanderTSV") -</pre> - -QueryExpanderTSVによるクエリ展開については "QueryExpanderTSV":http://groonga.org/ja/docs/reference/query_expanders/tsv.html を参照してください。 - -置換テーブルの例については "クエリー展開用の引数":http://groonga.org/ja/docs/reference/commands/select.html#query-expansion を参照してください。 - - -これにより、クエリ展開と重みづけを同時に指定したいものは @--query@ に書かないといけないという制限が緩和されます。 - -例えば、以下のように置換テーブルと同等のことを書かないといけなかったクエリは - -<pre> - select Users --match_columns "memo * 100" --query "memo:@groonga" \ - --query_expander Synonyms.synonym \ - --filter 'query("name * 10", "((...) OR (...) OR (...))")' -</pre> - -こんな風に自前で展開せずにすむようになります。 - -<pre> - select Users --match_columns "memo * 100" --query "memo:@groonga" \ - --query_expander Synonyms.synonym \ - --filter 'query("name * 10", "...", "Synonyms.synonym")' -</pre> - - -h3. さいごに - -3.0.1からの詳細な変更点は "3.0.2リリース 2013/03/29":/ja/docs/news.html#release-3-0-2 を確認してください。 - -それでは、groongaでガンガン検索してください! Renamed: ja/_posts/2013-04-02-series-in-gihyo-jp.md (+10 -3) 56% =================================================================== --- ja/_posts/2013-04-02-series-in-gihyo-jp.textile 2016-02-07 10:35:40 +0900 (86ffee6) +++ ja/_posts/2013-04-02-series-in-gihyo-jp.md 2016-02-07 10:50:24 +0900 (4f4b220) @@ -1,12 +1,19 @@ --- layout: post.ja title: gihyo.jpさんで連載「隔週連載groonga」を開始しました! -description: gihyo.jpさんでgroongaを使いたくなる情報を隔週で紹介する連載についての紹介 +description: +gihyo.jpさんでgroongaを使いたくなる情報を隔週で紹介する連載についての紹介 --- h2. gihyo.jpさんで連載「隔週連載groonga」を開始しました! -今日から、 "gihyo.jp":http://gihyo.jp/ さんでgroongaの連載が始まりました。「 "隔週連載groonga":http://gihyo.jp/dev/clip/01/groonga 」と題して、groongaを使いたくなるような情報を隔週でお伝えします。 +今日から、 [gihyo.jp](http://gihyo.jp/) +さんでgroongaの連載が始まりました。「 +[隔週連載groonga](http://gihyo.jp/dev/clip/01/groonga) +」と題して、groongaを使いたくなるような情報を隔週でお伝えします。 「隔週連載groonga」では、groongaの利用事例の紹介と、その利用事例に関連した情報を交互にお伝えします。利用事例の紹介は、実際にgroongaを使ってくれている方にお願いして記事を書いてもらっています。利用事例の紹介を見た人に、「こんなところでgroongaを使ってるんだ!じゃあ自分も使ってみようかなあ」と思ってもらいたいというのが狙いです。そして、利用事例に関連した情報は、「あそこではこういう風にgroongaを使ってるなら、自分がしたいことはこうやればできそう!」といった、groongaを使うときに応用するときに役立つことを狙っています。連載を続けるうちに、「連載を見てgroongaを使い始めました!」という人が利用事例の紹介を書いてくれると、この連載は成功した!と言えます。 -"今日公開された記事(第1回目)":http://gihyo.jp/dev/clip/01/groonga/0001 は、連載の最初なのでgroongaの歴史や特徴の説明をしています。次回(4/16公開予定)から利用事例の紹介を始めます。利用事例は "公募":http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html しています。あなたのgroonga利用事例をぜひこの連載で紹介してください。よろしくお願いします! +[今日公開された記事(第1回目)](http://gihyo.jp/dev/clip/01/groonga/0001) +は、連載の最初なのでgroongaの歴史や特徴の説明をしています。次回(4/16公開予定)から利用事例の紹介を始めます。利用事例は +[公募](http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html) +しています。あなたのgroonga利用事例をぜひこの連載で紹介してください。よろしくお願いします! Added: ja/_posts/2013-04-29-release.md (+163 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-04-29-release.md 2016-02-07 10:50:24 +0900 (0e88c6b) @@ -0,0 +1,163 @@ +--- +layout: post.ja +title: groonga 3.0.3リリース +description: groonga 3.0.3をリリースしました! +--- + +今日は肉の日ですね。 + +groonga 3.0.3リリース +--------------------- + +[groonga 3.0.3](/ja/docs/news.html#release-3-0-3) をリリースしました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +はじめに、利用事例の記事を書いてくれる人募集のお知らせです。(再度) + +これまでも、groonga.orgにて [利用事例](http://groonga.org/ja/users/) +を紹介してきましたが、それとは別に、 [gihyo.jp](http://gihyo.jp/) +にてgroonga関連の記事の連載を +[隔週連載groonga](http://gihyo.jp/dev/clip/01/groonga) +としてはじめました。 + +まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機です。現在第2回まで公開しています。 + +- [第1回 + 全文検索エンジンgroongaを紹介します!](http://gihyo.jp/dev/clip/01/groonga/0001) +- [第2回 groongaをRuby On Railsでも使ってみた + ~chikamap.comの事例から](http://gihyo.jp/dev/clip/01/groonga/0002) + +利用事例がつきたら終了なので、実際に使っているユーザーのみなさんに利用事例を書いてもらえたらいいなぁと思っています! +詳細は +[groonga普及のための協力のお願い](http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html) +を参照してください。 + +### 学習時の重み付けのカスタマイズをサポート + +今回のリリースでは、学習時の重みづけのカスタマイズをサポートしました。 + +groongaでは +[サジェスト機能](http://groonga.org/ja/docs/suggest/introduction.html) +として、補完/補正/提案の3つを提供しています。このサジェスト機能が「それらしい」結果を返すようにするには、適切な学習が必要です。 + +例えば、4月に「旬の野菜」で夏野菜が候補に出てきては困ります。ちょっと気が早いです。4月であれば、きちんと春野菜が候補にでてきて欲しいですね。 + +単純に1度学習するだけだと重みが一緒になってしまうので、時期によって重みづけを変更したい場合には、より重要なものを複数回同じデータで学習させる必要がありました。 +これでは、学習データの規模が巨大になると非常に手間がかかってしまいます。 + +そこで、学習時の重み付けのカスタマイズをサポートし、同じデータに対して複数回学習させなくても良いようにしました。個別に重みをカスタマイズしてからその都度データを学習させれば反映されます。 + +それでは実際の例で試してみましょう。旬の野菜を重みつきで学習する例を以下に示します。 + +最初にテスト用のデータベースを作成します。 + + % mkdir -p testdb + % groonga -n testdb/db shutdown + +次に、学習用のテーブルをgroonga-suggest-create-datasetコマンドで作成します。 + + % groonga-suggest-create-dataset testdb/db query + +最後に学習データを用意します。途中で `configuration` テーブルの `weight` +を10にしていますね。これが、今回サポートした重みづけの指定方法です。 + + load --table event_query --each 'suggest_preparer(_id, type, item, sequence, time, pair_query)' + [ + {"sequence": "1", "time": 1312950808.86057, "item": "旬 トマト", "type": "submit"} + {"sequence": "1", "time": 1312950808.86057, "item": "旬 さつまいも", "type": "submit"} + {"sequence": "1", "time": 1312950808.86057, "item": "旬 はくさい", "type": "submit"} + ] + + load --table configuration + [ + {"_key": "query", "weight": 10} + ] + + load --table event_query --each 'suggest_preparer(_id, type, item, sequence, time, pair_query)' + [ + {"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, + ] + +学習させた後で、「提案」機能を使ってみましょう。クエリは以下のようになります。 + + suggest --table item_query --column kana --types suggest --frequency_threshold 1 --query 旬 + +旬というキーワードで提案された結果は4件あって、キャベツのスコアが一番高いことがわかります。 +出現頻度を指定するための `--frequency_threshold` +をうまく調整すれば、より適切な提案ができるでしょう。 + + [ + [0,1366613297.59312,0.000118494033813477], + { + "suggest":[[4], + [["_key","ShortText"],["_score","Int32"]], + ["旬 キャベツ",10],["旬 はくさい",1],["旬 さつまいも",1],["旬 トマト",1]] + } + ] + +同じことをそれまで実現するには以下のように複数回学習させないとできなかったので、だいぶ手間が減りました。 + + load --table event_query --each 'suggest_preparer(_id, type, item, sequence, time, pair_query)' + [ + {"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, + {"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, + {"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, + {"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, + {"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, + {"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, + {"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, + {"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, + {"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, + ] + +### groongaのカスタマイズ版をビルドするためのパラメータの追加 + +今回のリリースでは、groongaのカスタマイズ版をビルドするためのパラメータの追加を行いました。 + +例えば、groongaが使用するスタックサイズのデフォルト値は1024になっていますが、これを変更してパッケージをビルドしたいときには、specファイルを以下のように修正する必要がありました。 + + %configure + --disable-static + --with-package-platform=redhat + --with-stack-size=4096 + --with-zlib + %if %{use_lzo} + --with-lzo + %endif + --with-munin-plugins + +今回のリリースで、以下のようにrpmbuildコマンドのパラメータとして指定できるようになり、specファイルそのものを編集する必要がなくなりました。 + + % rpmbuild --rebuild --define 'additional_configure_options --with-stach-size=4096' groonga-3.0.3-0.el6.src.rpm + +### Fedoraでのリリース方法の変更 + +今回のリリースからではありませんが、groonga +3.0.2のリリースから独自に提供していたyum +repositoryでの提供を止め、Fedora +公式のリポジトリでのパッケージ提供へと一本化するようにしました。 + +これまで、Fedora +公式のリポジトリからインストールできるgroongaは2.0.9と古い状態だったのですが、最新のリリースに追従するようになっています。 +これにより、インストールのときにリポジトリを登録する必要がなくなりました。 + +ただし、これまでのように独自に提供していた場合と異なり、Fedora +公式のリポジトリへと反映されるまでにはリリースから2〜3週間程度のタイムラグがあります。 + +### Ubuntu 13.04 Raring Ringtailのサポート + +今回のリリースでは 2013/04/25 にリリースされたばかりのUbuntu +13.04のサポートを追加しました。 + +インストール手順は +[ドキュメント](http://groonga.org/ja/docs/install/ubuntu.html#raring-ringrail) +を参照してください。 + +### さいごに + +3.0.2からの詳細な変更点は [3.0.3リリース +2013/04/29](/ja/docs/news.html#release-3-0-3) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2013-04-29-release.textile (+0 -159) 100644 =================================================================== --- ja/_posts/2013-04-29-release.textile 2016-02-07 10:35:40 +0900 (2f58558) +++ /dev/null @@ -1,159 +0,0 @@ ---- -layout: post.ja -title: groonga 3.0.3リリース -description: groonga 3.0.3をリリースしました! ---- - -今日は肉の日ですね。 - -h2. groonga 3.0.3リリース - -"groonga 3.0.3":/ja/docs/news.html#release-3-0-3 をリリースしました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - - -はじめに、利用事例の記事を書いてくれる人募集のお知らせです。(再度) - -これまでも、groonga.orgにて "利用事例":http://groonga.org/ja/users/ を紹介してきましたが、それとは別に、 "gihyo.jp":http://gihyo.jp/ にてgroonga関連の記事の連載を "隔週連載groonga":http://gihyo.jp/dev/clip/01/groonga としてはじめました。 - -まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機です。現在第2回まで公開しています。 - -* "第1回 全文検索エンジンgroongaを紹介します!":http://gihyo.jp/dev/clip/01/groonga/0001 -* "第2回 groongaをRuby On Railsでも使ってみた ~chikamap.comの事例から":http://gihyo.jp/dev/clip/01/groonga/0002 - -利用事例がつきたら終了なので、実際に使っているユーザーのみなさんに利用事例を書いてもらえたらいいなぁと思っています! -詳細は "groonga普及のための協力のお願い":http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html を参照してください。 - - - -h3. 学習時の重み付けのカスタマイズをサポート - -今回のリリースでは、学習時の重みづけのカスタマイズをサポートしました。 - -groongaでは "サジェスト機能":http://groonga.org/ja/docs/suggest/introduction.html として、補完/補正/提案の3つを提供しています。このサジェスト機能が「それらしい」結果を返すようにするには、適切な学習が必要です。 - -例えば、4月に「旬の野菜」で夏野菜が候補に出てきては困ります。ちょっと気が早いです。4月であれば、きちんと春野菜が候補にでてきて欲しいですね。 - -単純に1度学習するだけだと重みが一緒になってしまうので、時期によって重みづけを変更したい場合には、より重要なものを複数回同じデータで学習させる必要がありました。 -これでは、学習データの規模が巨大になると非常に手間がかかってしまいます。 - -そこで、学習時の重み付けのカスタマイズをサポートし、同じデータに対して複数回学習させなくても良いようにしました。個別に重みをカスタマイズしてからその都度データを学習させれば反映されます。 - -それでは実際の例で試してみましょう。旬の野菜を重みつきで学習する例を以下に示します。 - -最初にテスト用のデータベースを作成します。 - -<pre> -% mkdir -p testdb -% groonga -n testdb/db shutdown -</pre> - -次に、学習用のテーブルをgroonga-suggest-create-datasetコマンドで作成します。 - -<pre> -% groonga-suggest-create-dataset testdb/db query -</pre> - -最後に学習データを用意します。途中で @configuration@ テーブルの @weight@ を10にしていますね。これが、今回サポートした重みづけの指定方法です。 - -<pre> -load --table event_query --each 'suggest_preparer(_id, type, item, sequence, time, pair_query)' -[ -{"sequence": "1", "time": 1312950808.86057, "item": "旬 トマト", "type": "submit"} -{"sequence": "1", "time": 1312950808.86057, "item": "旬 さつまいも", "type": "submit"} -{"sequence": "1", "time": 1312950808.86057, "item": "旬 はくさい", "type": "submit"} -] - -load --table configuration -[ -{"_key": "query", "weight": 10} -] - -load --table event_query --each 'suggest_preparer(_id, type, item, sequence, time, pair_query)' -[ -{"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, -] -</pre> - -学習させた後で、「提案」機能を使ってみましょう。クエリは以下のようになります。 - -<pre> -suggest --table item_query --column kana --types suggest --frequency_threshold 1 --query 旬 -</pre> - -旬というキーワードで提案された結果は4件あって、キャベツのスコアが一番高いことがわかります。 -出現頻度を指定するための @--frequency_threshold@ をうまく調整すれば、より適切な提案ができるでしょう。 - -<pre> -[ - [0,1366613297.59312,0.000118494033813477], - { - "suggest":[[4], - [["_key","ShortText"],["_score","Int32"]], - ["旬 キャベツ",10],["旬 はくさい",1],["旬 さつまいも",1],["旬 トマト",1]] - } -] -</pre> - -同じことをそれまで実現するには以下のように複数回学習させないとできなかったので、だいぶ手間が減りました。 - -<pre> -load --table event_query --each 'suggest_preparer(_id, type, item, sequence, time, pair_query)' -[ -{"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, -{"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, -{"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, -{"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, -{"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, -{"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, -{"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, -{"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, -{"sequence": "1", "time": 1312950803.86057, "item": "旬 キャベツ", "type": "submit"}, -] -</pre> - -h3. groongaのカスタマイズ版をビルドするためのパラメータの追加 - -今回のリリースでは、groongaのカスタマイズ版をビルドするためのパラメータの追加を行いました。 - -例えば、groongaが使用するスタックサイズのデフォルト値は1024になっていますが、これを変更してパッケージをビルドしたいときには、specファイルを以下のように修正する必要がありました。 - -<pre> -%configure \ - --disable-static \ - --with-package-platform=redhat \ - --with-stack-size=4096 \ - --with-zlib \ -%if %{use_lzo} - --with-lzo \ -%endif - --with-munin-plugins -</pre> - -今回のリリースで、以下のようにrpmbuildコマンドのパラメータとして指定できるようになり、specファイルそのものを編集する必要がなくなりました。 - -<pre> -% rpmbuild --rebuild --define 'additional_configure_options --with-stach-size=4096' groonga-3.0.3-0.el6.src.rpm -</pre> - -h3. Fedoraでのリリース方法の変更 - -今回のリリースからではありませんが、groonga 3.0.2のリリースから独自に提供していたyum repositoryでの提供を止め、Fedora 公式のリポジトリでのパッケージ提供へと一本化するようにしました。 - -これまで、Fedora 公式のリポジトリからインストールできるgroongaは2.0.9と古い状態だったのですが、最新のリリースに追従するようになっています。 -これにより、インストールのときにリポジトリを登録する必要がなくなりました。 - -ただし、これまでのように独自に提供していた場合と異なり、Fedora 公式のリポジトリへと反映されるまでにはリリースから2〜3週間程度のタイムラグがあります。 - -h3. Ubuntu 13.04 Raring Ringtailのサポート - -今回のリリースでは 2013/04/25 にリリースされたばかりのUbuntu 13.04のサポートを追加しました。 - -インストール手順は "ドキュメント":http://groonga.org/ja/docs/install/ubuntu.html#raring-ringrail を参照してください。 - -h3. さいごに - -3.0.2からの詳細な変更点は "3.0.3リリース 2013/04/29":/ja/docs/news.html#release-3-0-3 を確認してください。 - -それでは、groongaでガンガン検索してください! Added: ja/_posts/2013-05-01-remove-1x-packages-from-repository.md (+31 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-05-01-remove-1x-packages-from-repository.md 2016-02-07 10:50:24 +0900 (17322ee) @@ -0,0 +1,31 @@ +--- +layout: post.ja +title: リポジトリから1.x系のパッケージを削除しました +description: +リポジトリから1.x系のパッケージ/サポート切れリリースを削除しました +--- +h2. リポジトリから1.x系のパッケージを削除しました + +先日の肉の日(4/29)に groonga 3.0.3 +をリリースしましたが、それに合わせてリポジトリの整理をしました。 + +1.x系の最後のリリースはgroonga +1.3.0で2012/01/29のことですし、二世代前のシリーズでもあります。 + +リポジトリの整理の対象は以下の基準をもとに行いました。 + +- 1.x系のパッケージ +- すでにサポート切れのリリース + +前者の基準では、groonga 1.x系および、mroonga +1.x系のパッケージをリポジトリから削除しました。後者の基準では、以下のリリースのパッケージをリポジトリから削除しました。 + +- Fedora 15 +- Fedora 16 +- Fedora 17 +- Ubuntu 10.10 (Maverick Meerkat 2012年4月サポート終了) +- Ubuntu 11.04 (Natty Narwhal 2012年10月サポート終了) + +どうしても古いバージョンを使いたい場合には、 +[ソースアーカイブ](http://packages.groonga.org/source/groonga/) +を提供しているので、そちらをご利用ください。 Deleted: ja/_posts/2013-05-01-remove-1x-packages-from-repository.textile (+0 -25) 100644 =================================================================== --- ja/_posts/2013-05-01-remove-1x-packages-from-repository.textile 2016-02-07 10:35:40 +0900 (f07af38) +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: post.ja -title: リポジトリから1.x系のパッケージを削除しました -description: リポジトリから1.x系のパッケージ/サポート切れリリースを削除しました ---- -h2. リポジトリから1.x系のパッケージを削除しました - -先日の肉の日(4/29)に groonga 3.0.3 をリリースしましたが、それに合わせてリポジトリの整理をしました。 - -1.x系の最後のリリースはgroonga 1.3.0で2012/01/29のことですし、二世代前のシリーズでもあります。 - -リポジトリの整理の対象は以下の基準をもとに行いました。 - -* 1.x系のパッケージ -* すでにサポート切れのリリース - -前者の基準では、groonga 1.x系および、mroonga 1.x系のパッケージをリポジトリから削除しました。後者の基準では、以下のリリースのパッケージをリポジトリから削除しました。 - -* Fedora 15 -* Fedora 16 -* Fedora 17 -* Ubuntu 10.10 (Maverick Meerkat 2012年4月サポート終了) -* Ubuntu 11.04 (Natty Narwhal 2012年10月サポート終了) - -どうしても古いバージョンを使いたい場合には、 "ソースアーカイブ":http://packages.groonga.org/source/groonga/ を提供しているので、そちらをご利用ください。 Added: ja/_posts/2013-05-10-sticker.md (+54 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-05-10-sticker.md 2016-02-07 10:50:24 +0900 (cba4ace) @@ -0,0 +1,54 @@ +--- +layout: post.ja +title: ステッカーのデータを公開 +description: +groonga/mroonga/rroonga/nroongaステッカーの画像データを公開しました +--- +h2. ステッカーのデータを公開 + +昨年の [全文検索エンジンgroongaを囲む夕べ +3](http://atnd.org/events/33070) +で、groongaステッカーを配布しました。イベントに参加した方はすでに自分のノートパソコンなどに貼っていることでしょう。 + +そんなgroongaステッカーですが、次の2つの問題がありました。 + +- イベントのときなど直接会う機会がないと配布できない +- 黒い縁に中抜きのデザインだったので黒いものに貼ると文字が見えない + +この2つの問題を解決するべく次の2種類のデザインで +[groongaステッカーのデータを公開](/ja/sticker/) しました! + +- ![groongaステッカー(黒)](/images/stickers/basic/groonga-sticker-black.png "groongaステッカー(黒)") +- ![groongaステッカー(白)](/images/stickers/basic/groonga-sticker-white.png "groongaステッカー(白)") + +これでどのように問題を解決できるかを説明します。 + +まず、「直接会う機会がないと配布できない」問題についてです。これは、ステッカーが物理的なものであることが原因です。ステッカーのデータを公開することにより、誰でも自分の分を印刷できるようになります。「直接会う機会がない」方は、自分でダウンロード・印刷してぜひステッカーを貼ってください! + +なお、ステッカーのライセンスは [CC-BY +3.0ライセンス](http://creativecommons.org/licenses/by/3.0/deed.ja) +ですが、印刷したステッカーを配布する場合は原著作者の表記なしでもOKになっています。ぜひ、仲間の分も一緒に印刷して周りに配布してください! + +次に、「黒いものに貼ると文字が見えない」問題です。これは、ステッカーが黒い縁取りと中抜きのデザインだったことが原因です。そのため、今回は白い縁取りと中抜きのデザインも用意しました。黒いものに貼るときはこちらのデータをダウンロード・印刷して貼ってください! + +前回のイベントではgroongaステッカーだけ配布していましたが、今回は +[groongaステッカー](/ja/sticker/#groonga) だけではなく、 +[mroongaステッカー](/ja/sticker/#mroonga) 、 +[rroongaステッカー](/ja/sticker/#rroonga) 、 +[nroongaステッカー](/ja/sticker/#nroonga) +も公開しました。それぞれのプロジェクトを使っている人もぜひダウンロード・印刷して貼ってください! + +- ![mroongaステッカー(黒)](/images/stickers/basic/mroonga-sticker-black.png "mroongaステッカー(黒)") +- ![mroongaステッカー(白)](/images/stickers/basic/mroonga-sticker-white.png "mroongaステッカー(白)") +- ![rroongaステッカー(黒)](/images/stickers/basic/rroonga-sticker-black.png "rroongaステッカー(黒)") +- ![rroongaステッカー(白)](/images/stickers/basic/rroonga-sticker-white.png "rroongaステッカー(白)") +- ![nroongaステッカー(黒)](/images/stickers/basic/nroonga-sticker-black.png "nroongaステッカー(黒)") +- ![nroongaステッカー(白)](/images/stickers/basic/nroonga-sticker-white.png "nroongaステッカー(白)") + +今後のイベントでもステッカーを配布するので、自分で印刷するのが手間だという人はぜひイベントに参加してステッカーをもらってください!なお、次のイベントは(今年も!)11/29(いい肉の日)の予定です。お楽しみに! + +[ステッカーのダウンロードはこちらからどうぞ。](/ja/sticker/) + +groongaプロジェクトが主催していないgroongaイベントもどんどんやってもらいたいと思っています。声をかけてもらえればステッカーを持ってかけつけるので、 +[@groonga](https://twitter.com/groonga/) またはgroon****@groon***** +までご連絡ください。 Deleted: ja/_posts/2013-05-10-sticker.textile (+0 -41) 100644 =================================================================== --- ja/_posts/2013-05-10-sticker.textile 2016-02-07 10:35:40 +0900 (3d3e6ba) +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: post.ja -title: ステッカーのデータを公開 -description: groonga/mroonga/rroonga/nroongaステッカーの画像データを公開しました ---- -h2. ステッカーのデータを公開 - -昨年の "全文検索エンジンgroongaを囲む夕べ 3":http://atnd.org/events/33070 で、groongaステッカーを配布しました。イベントに参加した方はすでに自分のノートパソコンなどに貼っていることでしょう。 - -そんなgroongaステッカーですが、次の2つの問題がありました。 - -* イベントのときなど直接会う機会がないと配布できない -* 黒い縁に中抜きのデザインだったので黒いものに貼ると文字が見えない - -この2つの問題を解決するべく次の2種類のデザインで "groongaステッカーのデータを公開":/ja/sticker/ しました! - -* !/images/stickers/basic/groonga-sticker-black.png(groongaステッカー(黒))! -* !/images/stickers/basic/groonga-sticker-white.png(groongaステッカー(白))! - -これでどのように問題を解決できるかを説明します。 - -まず、「直接会う機会がないと配布できない」問題についてです。これは、ステッカーが物理的なものであることが原因です。ステッカーのデータを公開することにより、誰でも自分の分を印刷できるようになります。「直接会う機会がない」方は、自分でダウンロード・印刷してぜひステッカーを貼ってください! - -なお、ステッカーのライセンスは "CC-BY 3.0ライセンス":http://creativecommons.org/licenses/by/3.0/deed.ja ですが、印刷したステッカーを配布する場合は原著作者の表記なしでもOKになっています。ぜひ、仲間の分も一緒に印刷して周りに配布してください! - -次に、「黒いものに貼ると文字が見えない」問題です。これは、ステッカーが黒い縁取りと中抜きのデザインだったことが原因です。そのため、今回は白い縁取りと中抜きのデザインも用意しました。黒いものに貼るときはこちらのデータをダウンロード・印刷して貼ってください! - -前回のイベントではgroongaステッカーだけ配布していましたが、今回は "groongaステッカー":/ja/sticker/#groonga だけではなく、 "mroongaステッカー":/ja/sticker/#mroonga 、 "rroongaステッカー":/ja/sticker/#rroonga 、 "nroongaステッカー":/ja/sticker/#nroonga も公開しました。それぞれのプロジェクトを使っている人もぜひダウンロード・印刷して貼ってください! - -* !/images/stickers/basic/mroonga-sticker-black.png(mroongaステッカー(黒))! -* !/images/stickers/basic/mroonga-sticker-white.png(mroongaステッカー(白))! -* !/images/stickers/basic/rroonga-sticker-black.png(rroongaステッカー(黒))! -* !/images/stickers/basic/rroonga-sticker-white.png(rroongaステッカー(白))! -* !/images/stickers/basic/nroonga-sticker-black.png(nroongaステッカー(黒))! -* !/images/stickers/basic/nroonga-sticker-white.png(nroongaステッカー(白))! - -今後のイベントでもステッカーを配布するので、自分で印刷するのが手間だという人はぜひイベントに参加してステッカーをもらってください!なお、次のイベントは(今年も!)11/29(いい肉の日)の予定です。お楽しみに! - -"ステッカーのダウンロードはこちらからどうぞ。":/ja/sticker/ - -groongaプロジェクトが主催していないgroongaイベントもどんどんやってもらいたいと思っています。声をかけてもらえればステッカーを持ってかけつけるので、 "@groonga":https://twitter.com/groonga/ またはgroon****@groon***** までご連絡ください。 Added: ja/_posts/2013-05-29-release.md (+169 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-05-29-release.md 2016-02-07 10:50:24 +0900 (e644cfb) @@ -0,0 +1,169 @@ +--- +layout: post.ja +title: groonga 3.0.4リリース +description: groonga 3.0.4をリリースしました! +--- + +今日は肉の日ですね。 + +groonga 3.0.4リリース +--------------------- + +[groonga 3.0.4](/ja/docs/news.html#release-3-0-4) をリリースしました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +はじめに、利用事例の記事を書いてくれる人募集のお知らせです。(再度) + +これまでも、groonga.orgにて [利用事例](http://groonga.org/ja/users/) +を紹介してきましたが、それとは別に、 [gihyo.jp](http://gihyo.jp/) +にてgroonga関連の記事の連載を +[隔週連載groonga](http://gihyo.jp/dev/clip/01/groonga) +としてはじめました。 + +まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機です。現在第4回まで公開しています。 + +- [第1回 + 全文検索エンジンgroongaを紹介します!](http://gihyo.jp/dev/clip/01/groonga/0001) +- [第2回 groongaをRuby On Railsでも使ってみた + ~chikamap.comの事例から](http://gihyo.jp/dev/clip/01/groonga/0002) +- [第3回 すべてのMySQLユーザに高速な全文検索機能を! - + mroongaの紹介](http://gihyo.jp/dev/clip/01/groonga/0003) +- [第4回 + rroongaを使ったソースコード検索エンジンMilkode](http://gihyo.jp/dev/clip/01/groonga/0004) + +利用事例がつきたら終了なので、実際に使っているユーザーのみなさんに利用事例を書いてもらえたらいいなぁと思っています! +詳細は +[groonga普及のための協力のお願い](http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html) +を参照してください。 + +### match_columnsにてマルチセクション対応のインデックス指定をサポート + +今回のリリースでは、match_columnsにてマルチセクションに対応するインデックス指定をサポートしました。 + +例えば、titleカラムとcontentカラムを含むテーブルMemosに対してカラムごとに重みづけをして検索するときのことを考えてみましょう。 + +以下のようなスキーマ定義となるでしょう。 + + table_create Memos TABLE_NO_KEY + column_create Memos title COLUMN_SCALAR ShortText + column_create Memos content COLUMN_SCALAR ShortText + + table_create Lexicon TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram + column_create Lexicon title_index COLUMN_INDEX|WITH_POSITION|WITH_SECTION Memos title + column_create Lexicon content_index COLUMN_INDEX|WITH_POSITION|WITH_SECTION Memos content + +語彙表であるLexiconテーブルにマルチカラムインデックスを張ったとします。titleを重視したい場合のクエリは以下のようになるでしょう。 + + select Memos + --match_columns "Lexicon.title_index * 10 || Lexicon.content_index" + --query rroonga --output_columns "title, content, _score" + +同等のことをマルチカラムインデックスに対してもできるようになりました。 + +そのためには以下のようにスキーマ定義を変更します。 + + table_create Lexicon TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram + column_create Lexicon memo_index COLUMN_INDEX|WITH_POSITION|WITH_SECTION Memos title,content + +そして、クエリでmemo_indexのあとに.(カラム名)を指定します。同等のことが以下のクエリで実現できるようになりました。 + + select Memos + --match_columns "Lexicon.memo_index.title * 10 || Lexicon.memo_index.content" + --query rroonga + --output_columns "title, content, _score" + +テーブルに複数の全文検索対象のカラムがある場合、マルチカラムインデックスを張るというのはよくあります。 + +また、カラムに複数のトークナイザーやノーマライザーを適用し、検索のときに使用するインデックスを切り替えたいということがあります。 + +そういった場合に単純にカラム名を指定すると、複数のインデックスを使ってしまい意図しない検索となることがあります。 +今回のリリースでカラムがマルチカラムインデックスの構成要素であった場合に、明示的に指定できるようになりました。 + +### tokenize コマンドのサポート + +今回のリリースでは、tokenizeコマンドのサポートを追加しました。 + +これまで、groongaでノーマライザーの挙動を確認するためのコマンドとしてnormalizeコマンドはあったのですが、トークナイザーの挙動を確認するためのコマンドが提供されていませんでした。 + +今回、tokenizeコマンドを追加したことでノーマライザー、トークナイザー両方の挙動を確認することができ、意図しない検索結果となった場合の問題の切り分けがより簡単にできるようになりました。 + +tokenizeコマンドは以下のようにして使います。 + +tokenizeコマンドには4つの引数がありますが、必須なのはトークナイザーと対象となる文字列の2つです。 + +例えば、TokenBigramトークナイザーで"groonga3.0.4"という文字列をトークナイズすると以下のようになります。 + + > tokenize TokenBigram "groonga3.0.4" + [ + [0,1369290009.77065,0.000670194625854492], + [ + {"value":"gr","position":0}, + {"value":"ro","position":1}, + {"value":"oo","position":2}, + {"value":"on","position":3}, + {"value":"ng","position":4}, + {"value":"ga","position":5}, + {"value":"a3","position":6}, + {"value":"3.","position":7}, + {"value":".0","position":8}, + {"value":"0.","position":9}, + {"value":".4","position":10}, + {"value":"4","position":11} + ] + ] + +tokenizeコマンドの詳細は +[ドキュメント](http://groonga.org/ja/docs/reference/commands/tokenize.html) +を参照してください。 + +もうすでに、開発版のtokenizeコマンドを使って実際の挙動を検証してくれているブログがありますので合わせて紹介します。 + +- Y-Ken Studio はてブロ支店 + [「groonga/mroongaの分かち書き機能(tokenizer)の挙動を追ってみる」](http://y-ken.hatenablog.com/entry/mroonga-tokenizer-behavior) + +Y.Kentaroさんは +[mysql-mroongaカテゴリで他にも有益な情報をまとめて](http://y-ken.hatenablog.com/category/mysql-mroonga) +くれているので、参考にしてみてください。 + +### Debian 8.0 (jessie)のサポート + +今回のリリースでは Debian 8.0 (jessie)のサポートを追加しました。 + +これまでtestingであったwheezyが安定版としてリリースされたことによるものです。 + +インストール手順は +[ドキュメント](http://groonga.org/ja/docs/install/debian.html#jessie) +を参照してください。 + +### 週刊groonga翻訳始めます + +毎週木曜に [Qiita](http://qiita.com/) +にてgroongaやmroonga,rroongaなどのトピックを一つ投稿するという取り組みを続けています。 + +それなりにトピックがたまってきたので、これを翻訳して英語圏にも情報を発信していこうかと考えています。 + +ただ、現状リソースがあまり足りていないので、ユーザのみなさんにも協力していただけたらいいなと思っています。 + +具体的には以下のようにして作業をすすめていきたいと思います。 + +1. +Qiitaに英語圏向けのノウハウ・Tipsの投稿ページを元記事を複製して用意する(この時点では内容は日本語のまま) +2. 記事ページをみんなでよってたかって翻訳する。このときには +[「編集リクエスト」](http://blog.qiita.com/post/40808687185/patch-request-release) +を使って記事を更新します。 +3. 記事の翻訳が完成したら、内容に応じて +[blogroonga](http://groonga.org/blog/) や +[mroongaブログ](http://mroonga.org/blog/) に掲載します。 +4. Tumblrでリブログ + +1,3,4はgroonga開発チームでやるとして、2.のところを手分けして実現できたら +いいなぁと思っています。 + +### さいごに + +3.0.3からの詳細な変更点は [3.0.4リリース +2013/05/29](/ja/docs/news.html#release-3-0-4) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2013-05-29-release.textile (+0 -157) 100644 =================================================================== --- ja/_posts/2013-05-29-release.textile 2016-02-07 10:35:40 +0900 (8e54bef) +++ /dev/null @@ -1,157 +0,0 @@ ---- -layout: post.ja -title: groonga 3.0.4リリース -description: groonga 3.0.4をリリースしました! ---- - -今日は肉の日ですね。 - -h2. groonga 3.0.4リリース - -"groonga 3.0.4":/ja/docs/news.html#release-3-0-4 をリリースしました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - - -はじめに、利用事例の記事を書いてくれる人募集のお知らせです。(再度) - -これまでも、groonga.orgにて "利用事例":http://groonga.org/ja/users/ を紹介してきましたが、それとは別に、 "gihyo.jp":http://gihyo.jp/ にてgroonga関連の記事の連載を "隔週連載groonga":http://gihyo.jp/dev/clip/01/groonga としてはじめました。 - -まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機です。現在第4回まで公開しています。 - -* "第1回 全文検索エンジンgroongaを紹介します!":http://gihyo.jp/dev/clip/01/groonga/0001 -* "第2回 groongaをRuby On Railsでも使ってみた ~chikamap.comの事例から":http://gihyo.jp/dev/clip/01/groonga/0002 -* "第3回 すべてのMySQLユーザに高速な全文検索機能を! - mroongaの紹介":http://gihyo.jp/dev/clip/01/groonga/0003 -* "第4回 rroongaを使ったソースコード検索エンジンMilkode":http://gihyo.jp/dev/clip/01/groonga/0004 - -利用事例がつきたら終了なので、実際に使っているユーザーのみなさんに利用事例を書いてもらえたらいいなぁと思っています! -詳細は "groonga普及のための協力のお願い":http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html を参照してください。 - -h3. match_columnsにてマルチセクション対応のインデックス指定をサポート - -今回のリリースでは、match_columnsにてマルチセクションに対応するインデックス指定をサポートしました。 - -例えば、titleカラムとcontentカラムを含むテーブルMemosに対してカラムごとに重みづけをして検索するときのことを考えてみましょう。 - -以下のようなスキーマ定義となるでしょう。 - -<pre> -table_create Memos TABLE_NO_KEY -column_create Memos title COLUMN_SCALAR ShortText -column_create Memos content COLUMN_SCALAR ShortText - -table_create Lexicon TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram -column_create Lexicon title_index COLUMN_INDEX|WITH_POSITION|WITH_SECTION Memos title -column_create Lexicon content_index COLUMN_INDEX|WITH_POSITION|WITH_SECTION Memos content -</pre> - -語彙表であるLexiconテーブルにマルチカラムインデックスを張ったとします。titleを重視したい場合のクエリは以下のようになるでしょう。 - -<pre> -select Memos \ - --match_columns "Lexicon.title_index * 10 || Lexicon.content_index" \ - --query rroonga --output_columns "title, content, _score" -</pre> - -同等のことをマルチカラムインデックスに対してもできるようになりました。 - -そのためには以下のようにスキーマ定義を変更します。 - -<pre> -table_create Lexicon TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram -column_create Lexicon memo_index COLUMN_INDEX|WITH_POSITION|WITH_SECTION Memos title,content -</pre> - -そして、クエリでmemo_indexのあとに.(カラム名)を指定します。同等のことが以下のクエリで実現できるようになりました。 - -<pre> -select Memos \ - --match_columns "Lexicon.memo_index.title * 10 || Lexicon.memo_index.content" \ - --query rroonga \ - --output_columns "title, content, _score" -</pre> - -テーブルに複数の全文検索対象のカラムがある場合、マルチカラムインデックスを張るというのはよくあります。 - -また、カラムに複数のトークナイザーやノーマライザーを適用し、検索のときに使用するインデックスを切り替えたいということがあります。 - -そういった場合に単純にカラム名を指定すると、複数のインデックスを使ってしまい意図しない検索となることがあります。 -今回のリリースでカラムがマルチカラムインデックスの構成要素であった場合に、明示的に指定できるようになりました。 - - -h3. tokenize コマンドのサポート - -今回のリリースでは、tokenizeコマンドのサポートを追加しました。 - -これまで、groongaでノーマライザーの挙動を確認するためのコマンドとしてnormalizeコマンドはあったのですが、トークナイザーの挙動を確認するためのコマンドが提供されていませんでした。 - -今回、tokenizeコマンドを追加したことでノーマライザー、トークナイザー両方の挙動を確認することができ、意図しない検索結果となった場合の問題の切り分けがより簡単にできるようになりました。 - -tokenizeコマンドは以下のようにして使います。 - -tokenizeコマンドには4つの引数がありますが、必須なのはトークナイザーと対象となる文字列の2つです。 - -例えば、TokenBigramトークナイザーで"groonga3.0.4"という文字列をトークナイズすると以下のようになります。 - -<pre> -> tokenize TokenBigram "groonga3.0.4" -[ - [0,1369290009.77065,0.000670194625854492], - [ - {"value":"gr","position":0}, - {"value":"ro","position":1}, - {"value":"oo","position":2}, - {"value":"on","position":3}, - {"value":"ng","position":4}, - {"value":"ga","position":5}, - {"value":"a3","position":6}, - {"value":"3.","position":7}, - {"value":".0","position":8}, - {"value":"0.","position":9}, - {"value":".4","position":10}, - {"value":"4","position":11} - ] -] -</pre> - -tokenizeコマンドの詳細は "ドキュメント":http://groonga.org/ja/docs/reference/commands/tokenize.html を参照してください。 - -もうすでに、開発版のtokenizeコマンドを使って実際の挙動を検証してくれているブログがありますので合わせて紹介します。 - -* Y-Ken Studio はてブロ支店 "「groonga/mroongaの分かち書き機能(tokenizer)の挙動を追ってみる」":http://y-ken.hatenablog.com/entry/mroonga-tokenizer-behavior - -Y.Kentaroさんは "mysql-mroongaカテゴリで他にも有益な情報をまとめて":http://y-ken.hatenablog.com/category/mysql-mroonga くれているので、参考にしてみてください。 - -h3. Debian 8.0 (jessie)のサポート - -今回のリリースでは Debian 8.0 (jessie)のサポートを追加しました。 - -これまでtestingであったwheezyが安定版としてリリースされたことによるものです。 - -インストール手順は "ドキュメント":http://groonga.org/ja/docs/install/debian.html#jessie を参照してください。 - - -h3. 週刊groonga翻訳始めます - -毎週木曜に "Qiita":http://qiita.com/ にてgroongaやmroonga,rroongaなどのトピックを一つ投稿するという取り組みを続けています。 - -それなりにトピックがたまってきたので、これを翻訳して英語圏にも情報を発信していこうかと考えています。 - -ただ、現状リソースがあまり足りていないので、ユーザのみなさんにも協力していただけたらいいなと思っています。 - -具体的には以下のようにして作業をすすめていきたいと思います。 - -1. Qiitaに英語圏向けのノウハウ・Tipsの投稿ページを元記事を複製して用意する(この時点では内容は日本語のまま) -2. 記事ページをみんなでよってたかって翻訳する。このときには "「編集リクエスト」":http://blog.qiita.com/post/40808687185/patch-request-release を使って記事を更新します。 -3. 記事の翻訳が完成したら、内容に応じて "blogroonga":http://groonga.org/blog/ や "mroongaブログ":http://mroonga.org/blog/ に掲載します。 -4. Tumblrでリブログ - -1,3,4はgroonga開発チームでやるとして、2.のところを手分けして実現できたら -いいなぁと思っています。 - - -h3. さいごに - -3.0.3からの詳細な変更点は "3.0.4リリース 2013/05/29":/ja/docs/news.html#release-3-0-4 を確認してください。 - -それでは、groongaでガンガン検索してください! Added: ja/_posts/2013-06-29-release.md (+144 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-06-29-release.md 2016-02-07 10:50:24 +0900 (ecbbd4e) @@ -0,0 +1,144 @@ +--- +layout: post.ja +title: groonga 3.0.5リリース +description: groonga 3.0.5をリリースしました! +--- + +今日は肉の日ですね。 + +groonga 3.0.5リリース +--------------------- + +[groonga 3.0.5](/ja/docs/news.html#release-3-0-5) をリリースしました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +はじめに、利用事例の記事を書いてくれる人募集のお知らせです。(再度) + +これまでも、groonga.orgにて [利用事例](http://groonga.org/ja/users/) +を紹介してきましたが、それとは別に、 [gihyo.jp](http://gihyo.jp/) +にてgroonga関連の記事の連載を +[隔週連載groonga](http://gihyo.jp/dev/clip/01/groonga) +としてはじめました。 + +まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機です。現在第6回まで公開しています。先月は第4回までだったので記事が二本新たに追加されました。 + +- [第1回 + 全文検索エンジンgroongaを紹介します!](http://gihyo.jp/dev/clip/01/groonga/0001) +- [第2回 groongaをRuby On Railsでも使ってみた + ~chikamap.comの事例から](http://gihyo.jp/dev/clip/01/groonga/0002) +- [第3回 すべてのMySQLユーザに高速な全文検索機能を! - + mroongaの紹介](http://gihyo.jp/dev/clip/01/groonga/0003) +- [第4回 + rroongaを使ったソースコード検索エンジンMilkode](http://gihyo.jp/dev/clip/01/groonga/0004) +- [第5回 Rubyでサーバ要らずの高速全文検索! - + rroongaの紹介](http://gihyo.jp/dev/clip/01/groonga/0005) +- [第6回 [実録] + MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(1)](http://gihyo.jp/dev/clip/01/groonga/0006) + +利用事例がつきたら終了なので、実際に使っているユーザーのみなさんに利用事例を書いてもらえたらいいなぁと思っています! +詳細は +[groonga普及のための協力のお願い](http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html) +を参照してください。 + +### output_columnsでシングルクォートした文字列をサポート + +今回のリリースではoutput_columnsでシングルクォートした文字列をサポートしました。 + +groonga 3.0.2から、 `--output_columns` +で複雑な文字列の連結をサポートしました。これは例えば、titleというカラムがあるとして、 +`'"<" + title + ">"'` などとすると `"<(ここにtitleカラムの内容)>"` +というようにカラムの内容をちょっと加工して出力するという用途に使える機能です。 + +ただし、シングルクォートをサポートしていなかったので、クォートではまることがありました。 + +以下の例で、今回のリリースからできるようになった記述を紹介します。 + + table_create Entries TABLE_NO_KEY + column_create Entries title COLUMN_SCALAR ShortText + + load --table Entries + [ + {"title": "Single quote and double quote"} + ] + +3.0.4までだと `"<(ここにtitleカラムの内容)>"` +というのを実現するには以下の方法がありました。 + + select Entries --output_columns '_id, "<" + title + ">"' --command_version 2 + select Entries --output_columns "_id, "<" + title + ">"" --command_version 2 + +今回のリリースではシングルクォートをサポートしたので以下のように書けるようになります。 + + select Entries --output_columns "_id, '<' + title + '>'" --command_version 2 + +また、3.0.4では処理できなかった(結果が空になる)、以下のようなシングルクォートやダブルクウォートを含む場合も正しく処理できるようになりました。 + + # <"(titleカラムの内容)"> + select Entries --output_columns "_id, '<"' + title + '">'" --command_version 2 + #=> [1,"<"Single quote and double quote">"] + + # <'(titleカラムの内容)'> + select Entries --output_columns "_id, '<'' + title + ''>'" --command_version 2 + #=> [1,"<'Single quote and double quote'>"] + +### html_untag関数のサポート + +今回のリリースではHTMLタグを除去するための +[html_untag関数](http://groonga.org/ja/docs/reference/functions/html_untag) +を実験的にサポートしました。 + +例えば、Webサイトのスクレイピング結果をそのままgroongaデータベースに保存しているような場合を考えてみます。 + +以下のようなスキーマにスクレイピング結果を格納しているとしましょう。 + + table_create WebClips TABLE_NO_KEY + column_create WebClips url COLUMN_SCALAR ShortText + column_create WebClips content COLUMN_SCALAR ShortText + column_create WebClips tag COLUMN_VECTOR ShortText + +サンプルデータを以下のようにして投入します。 + + load --table WebClips + [ + {"_key": 1, "url": "http://groonga.org", "tag": ["groonga"], "content": "groonga is fast"}, + {"_key": 2, "url": "http://mroonga.org", "tag": ["mroonga"], "content": "mroonga is fast"}, + ] + +html_untagには対象となるカラムを指定します。今回はcontentカラムからHTMLタグを除去した結果が欲しいので、 +`html_untag(content)` となります。実行してみましょう。 + + select WebClips --output_columns "html_untag(content)" --command_version 2 + +結果は以下のようになります。 + + [[2], + [ + ["html_untag", "null"] + ], + ["groonga is fast"], + ["mroonga is fast"] + ] + +class属性つきのspanタグが除去されているのがわかります。 + +この関数を使うときには `--command_version 2` +を必ず指定してください。指定しないと意図通りの結果を得られません。 + +html_untagが導入された背景にはスクレイピングした結果をgroongaのデータベースへと保存した状態で検索したいというのがあります。 +ただしそのままではタグが邪魔なので、タグを除去するhtml_untagをサポートしました。 +html_untagは単体で使って嬉しいというよりも、snippet_htmlと組み合わせることを(将来的に)想定しています。 + +具体的には検索結果からHTMLを除去し、ハイライトしたい部分だけsnippet_htmlで加工するというのがあります。 + + 元のHTML - html_untag -> テキスト - snippet_html -> 必要な部分だけタグ付け + +まだ、html_untagの結果をsnippet_htmlでそのまま処理することはできませんが、将来的には対応を予定しています。 + +### さいごに + +3.0.4からの詳細な変更点は [3.0.5リリース +2013/06/29](/ja/docs/news.html#release-3-0-5) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2013-06-29-release.textile (+0 -142) 100644 =================================================================== --- ja/_posts/2013-06-29-release.textile 2016-02-07 10:35:40 +0900 (7d22560) +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: post.ja -title: groonga 3.0.5リリース -description: groonga 3.0.5をリリースしました! ---- - -今日は肉の日ですね。 - -h2. groonga 3.0.5リリース - -"groonga 3.0.5":/ja/docs/news.html#release-3-0-5 をリリースしました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - - -はじめに、利用事例の記事を書いてくれる人募集のお知らせです。(再度) - -これまでも、groonga.orgにて "利用事例":http://groonga.org/ja/users/ を紹介してきましたが、それとは別に、 "gihyo.jp":http://gihyo.jp/ にてgroonga関連の記事の連載を "隔週連載groonga":http://gihyo.jp/dev/clip/01/groonga としてはじめました。 - -まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機です。現在第6回まで公開しています。先月は第4回までだったので記事が二本新たに追加されました。 - - -* "第1回 全文検索エンジンgroongaを紹介します!":http://gihyo.jp/dev/clip/01/groonga/0001 -* "第2回 groongaをRuby On Railsでも使ってみた ~chikamap.comの事例から":http://gihyo.jp/dev/clip/01/groonga/0002 -* "第3回 すべてのMySQLユーザに高速な全文検索機能を! - mroongaの紹介":http://gihyo.jp/dev/clip/01/groonga/0003 -* "第4回 rroongaを使ったソースコード検索エンジンMilkode":http://gihyo.jp/dev/clip/01/groonga/0004 -* "第5回 Rubyでサーバ要らずの高速全文検索! - rroongaの紹介":http://gihyo.jp/dev/clip/01/groonga/0005 -* "第6回 [実録] MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(1)":http://gihyo.jp/dev/clip/01/groonga/0006 - -利用事例がつきたら終了なので、実際に使っているユーザーのみなさんに利用事例を書いてもらえたらいいなぁと思っています! -詳細は "groonga普及のための協力のお願い":http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html を参照してください。 - -h3. output_columnsでシングルクォートした文字列をサポート - -今回のリリースではoutput_columnsでシングルクォートした文字列をサポートしました。 - -groonga 3.0.2から、 @--output_columns@ で複雑な文字列の連結をサポートしました。これは例えば、titleというカラムがあるとして、 @'"<" + title + ">"'@ などとすると @"<(ここにtitleカラムの内容)>"@ というようにカラムの内容をちょっと加工して出力するという用途に使える機能です。 - -ただし、シングルクォートをサポートしていなかったので、クォートではまることがありました。 - -以下の例で、今回のリリースからできるようになった記述を紹介します。 - -<pre> -table_create Entries TABLE_NO_KEY -column_create Entries title COLUMN_SCALAR ShortText - -load --table Entries -[ - {"title": "Single quote and double quote"} -] -</pre> - -3.0.4までだと @"<(ここにtitleカラムの内容)>"@ というのを実現するには以下の方法がありました。 - -<pre> -select Entries --output_columns '_id, "<" + title + ">"' --command_version 2 -select Entries --output_columns "_id, \"<\" + title + \">\"" --command_version 2 -</pre> - -今回のリリースではシングルクォートをサポートしたので以下のように書けるようになります。 - -<pre> -select Entries --output_columns "_id, '<' + title + '>'" --command_version 2 -</pre> - -また、3.0.4では処理できなかった(結果が空になる)、以下のようなシングルクォートやダブルクウォートを含む場合も正しく処理できるようになりました。 - -<pre> -# <"(titleカラムの内容)"> -select Entries --output_columns "_id, '<\"' + title + '\">'" --command_version 2 -#=> [1,"<\"Single quote and double quote\">"] - -# <'(titleカラムの内容)'> -select Entries --output_columns "_id, '<\\'' + title + '\\'>'" --command_version 2 -#=> [1,"<'Single quote and double quote'>"] -</pre> - -h3. html_untag関数のサポート - -今回のリリースではHTMLタグを除去するための "html_untag関数":http://groonga.org/ja/docs/reference/functions/html_untag を実験的にサポートしました。 - -例えば、Webサイトのスクレイピング結果をそのままgroongaデータベースに保存しているような場合を考えてみます。 - -以下のようなスキーマにスクレイピング結果を格納しているとしましょう。 - -<pre> -table_create WebClips TABLE_NO_KEY -column_create WebClips url COLUMN_SCALAR ShortText -column_create WebClips content COLUMN_SCALAR ShortText -column_create WebClips tag COLUMN_VECTOR ShortText -</pre> - -サンプルデータを以下のようにして投入します。 - -<pre> -load --table WebClips -[ -{"_key": 1, "url": "http://groonga.org", "tag": ["groonga"], "content": "groonga is fast"}, -{"_key": 2, "url": "http://mroonga.org", "tag": ["mroonga"], "content": "mroonga is fast"}, -] -</pre> - -html_untagには対象となるカラムを指定します。今回はcontentカラムからHTMLタグを除去した結果が欲しいので、 @html_untag(content)@ となります。実行してみましょう。 - -<pre> -select WebClips --output_columns "html_untag(content)" --command_version 2 -</pre> - -結果は以下のようになります。 - -<pre> -[[2], - [ - ["html_untag", "null"] - ], - ["groonga is fast"], - ["mroonga is fast"] -] -</pre> - -class属性つきのspanタグが除去されているのがわかります。 - -この関数を使うときには @--command_version 2@ を必ず指定してください。指定しないと意図通りの結果を得られません。 - -html_untagが導入された背景にはスクレイピングした結果をgroongaのデータベースへと保存した状態で検索したいというのがあります。 -ただしそのままではタグが邪魔なので、タグを除去するhtml_untagをサポートしました。 -html_untagは単体で使って嬉しいというよりも、snippet_htmlと組み合わせることを(将来的に)想定しています。 - -具体的には検索結果からHTMLを除去し、ハイライトしたい部分だけsnippet_htmlで加工するというのがあります。 - -<pre> -元のHTML - html_untag -> テキスト - snippet_html -> 必要な部分だけタグ付け -</pre> - -まだ、html_untagの結果をsnippet_htmlでそのまま処理することはできませんが、将来的には対応を予定しています。 - - -h3. さいごに - -3.0.4からの詳細な変更点は "3.0.5リリース 2013/06/29":/ja/docs/news.html#release-3-0-5 を確認してください。 - -それでは、groongaでガンガン検索してください! Renamed: ja/_posts/2013-07-22-api-documentation.md (+58 -69) 52% =================================================================== --- ja/_posts/2013-07-22-api-documentation.textile 2016-02-07 10:35:40 +0900 (1eee86a) +++ ja/_posts/2013-07-22-api-documentation.md 2016-02-07 10:50:24 +0900 (16b3328) @@ -4,157 +4,146 @@ title: APIドキュメント化始めました (2013/8/12に完了しました) description: APIドキュメント化始めました --- -h2. APIドキュメント化始めました (2013/8/12に完了しました) +APIドキュメント化始めました (2013/8/12に完了しました) +----------------------------------------------------- <div class="note"> -*2013-08-12更新* APIドキュメント化作業は "@whombx":https://github.com/whombx さんのご協力により目標としていた作業を完成させることができました。pull requestをたくさん送ってくれた "@whombx":https://github.com/whombx さんのおかげです。とても助かりました。 -</div> +**2013-08-12更新** APIドキュメント化作業は +[`whombx":https://github.com/whombx さんのご協力により目標としていた作業を完成させることができました。pull requestをたくさん送ってくれた "`whombx](https://github.com/whombx) +さんのおかげです。とても助かりました。 +</div> 長い間懸案であった、groongaのAPIをドキュメント化する作業を始めました。 始めた理由は二つあります。 一つはAPIのドキュメントがないので、groongaをライブラリとして使おうとしたときにはソースを直接参照しないといけないためです。 -もう一つの理由は、Visual Studioでビルドするときに大量の警告メッセージが出力されるのを解消したい、というのがあります。現在mroongaをMariaDBにバンドルできるようにする作業を進めているのですが、この状態でバンドルしてもらうのは難しいです。groongaのヘッダに日本語で説明を書いているせいなので、ヘッダから日本語を追い出すことで問題を解消したいなぁというのがあります。 +もう一つの理由は、Visual +Studioでビルドするときに大量の警告メッセージが出力されるのを解消したい、というのがあります。現在mroongaをMariaDBにバンドルできるようにする作業を進めているのですが、この状態でバンドルしてもらうのは難しいです。groongaのヘッダに日本語で説明を書いているせいなので、ヘッダから日本語を追い出すことで問題を解消したいなぁというのがあります。 上記からドキュメント化の作業を始めたわけですが、現状リソースがまったく足りていません。 そこで、ユーザのみなさんにも協力していただけたらいいなと思っています。MariaDBへのバンドルを応援したいという人はドキュメント化作業に参加してくれると嬉しいです。 -では具体的にどんなことをやればいいのかを説明します。基本的には関数ごとにpull requestを送ってもらうと進めやすいです。 +では具体的にどんなことをやればいいのかを説明します。基本的には関数ごとにpull +requestを送ってもらうと進めやすいです。 あまりGitHubでの作業に慣れていなくてもできるように、「最初にやること」と「作業ごとにやること」、「関数ごとにやること」に分けて順に説明します。 -* 最初にやること -* 作業ごとにやること -* 関数ごとにやること +- 最初にやること +- 作業ごとにやること +- 関数ごとにやること -h3. 最初にやること +### 最初にやること 以下では、最初に一度だけ実施しておけば良いことを説明します。 -h4. 最初の設定 +#### 最初の設定 まずは、gitの設定をしましょう。すでにある程度gitを使っている場合には初期設定はすでに完了しているかも知れません。その場合には飛ばして構いません。 -<pre> -% git config --global user.name "あなたのユーザー名" -% git config --global user.email "あなたのメールアドレス" -</pre> + % git config --global user.name "あなたのユーザー名" + % git config --global user.email "あなたのメールアドレス" 上記はコミットログに使われます。公開しても差し支えないユーザ名もしくはメールアドレスを設定します。 -h4. GitHubでforkする +#### GitHubでforkする GitHubにアカウントがなければ用意してください。アカウントが用意できたら、ログインした状態で以下のURLにアクセスします。 -* "groongaリポジトリをforkする":https://github.com/groonga/groonga/fork +- [groongaリポジトリをforkする](https://github.com/groonga/groonga/fork) リポジトリ選択画面でご自分のリポジトリへとforkしてください。 -h4. 作業用リポジトリの初期設定 +#### 作業用リポジトリの初期設定 次は作業用にforkしたリポジトリを手元にcloneします。このとき、本家の変更に追従するための設定を行います。 -<pre> -% git clone git �� github.com:(あなたのGitHubのアカウント)/groonga.git -% cd groonga -% git remote add upstream git �� github.com:groonga/groonga -</pre> + % git clone git �� github.com:(あなたのGitHubのアカウント)/groonga.git + % cd groonga + % git remote add upstream git �� github.com:groonga/groonga -h4. ドキュメントビルド用の初期設定 +#### ドキュメントビルド用の初期設定 ドキュメントを生成するために以下を実行します。 -<pre> -% ./autogen.sh -% ./configure --enable-document -</pre> + % ./autogen.sh + % ./configure --enable-document ここまでで、「最初にやること」は完了です。次は「作業ごとにやること」へと進みます。 -h3. 作業ごとにやること +### 作業ごとにやること 以下では作業ごとにやることを説明します。 -h4. groonga本家に追従する +#### groonga本家に追従する groonga本家の最新状態に追従して、作業がかぶらないようにします。 -<pre> -% git fetch --all -% git checkout master -% git rebase upstream/master -</pre> + % git fetch --all + % git checkout master + % git rebase upstream/master 最新の状態に追従できたら、「関数ごとにやること」へと進みます。 -h3. 関数ごとにやること +### 関数ごとにやること -以下では、例えば @grn_ctx_open()@ の作業をする場合で説明します。 +以下では、例えば `grn_ctx_open()` の作業をする場合で説明します。 -h4. 作業用のブランチを作成 +#### 作業用のブランチを作成 作業対象のブランチを作成します。 -<pre> -% git checkout -b grn-ctx-open -</pre> + % git checkout -b grn-ctx-open -h4. 編集作業 +#### 編集作業 - �� include/groonga.h@ から @doc/source/reference/api/grn_ctx.txt@ にドキュメントを移動します。 +`include/groonga.h` から `doc/source/reference/api/grn_ctx.txt` +にドキュメントを移動します。 中には英訳されていないものもありますが、英訳はしなくて構いません。 移動先のドキュメントのフォーマット化を機械的に行っていただければOKです! -h4. ドキュメントの確認 +#### ドキュメントの確認 マークアップに問題がないか、HTMLを確認します。HTMLを生成するには以下のコマンドを実行します。 -<pre> -% cd doc/locale/en -% make html -</pre> + % cd doc/locale/en + % make html いつも使っているブラウザで該当ファイルを確認して、移動した内容が追加されていればOKです。 -<pre> -% firefox html/reference/api/grn_ctx.html -</pre> + % firefox html/reference/api/grn_ctx.html - -h4. コミット +#### コミット HTMLに問題がないことを確認できたら、コミットします。 -<pre> -% cd ${cloneしたディレクトリーのトップディレクトリー} -% git add include/groonga.h -% git add doc/source/reference/api/grn_ctx.txt -% git commit -</pre> + % cd ${cloneしたディレクトリーのトップディレクトリー} + % git add include/groonga.h + % git add doc/source/reference/api/grn_ctx.txt + % git commit コミットするときのメッセージについては、例えば以下のようにします。 -<pre> -doc: move grn_ctx_open() document to Sphinx text from header file -</pre> + doc: move grn_ctx_open() document to Sphinx text from header file -h4. pushとpull request +#### pushとpull request ご自分のリポジトリにpushして変更点をとりこめるように公開します。 -<pre> -% git push -u origin grn-ctx-open -</pre> + % git push -u origin grn-ctx-open -ここで @grn-ctx-open@ は前の方の作業で作ったブランチ名です。 +ここで `grn-ctx-open` は前の方の作業で作ったブランチ名です。 -ブラウザで https://github.com/(GitHubのアカウント)/groonga を開くと「 @grn-ctx-open@ 」ブランチをpull requestする!みたいなUIができているので、そこのボタンを押してpull requestしてください。入力フォームがでてきますが、コミットしたときメッセージで十分なのでそのままpull requestしてOKです! +ブラウザで https://github.com/(GitHubのアカウント)/groonga を開くと「 +`grn-ctx-open` 」ブランチをpull +requestする!みたいなUIができているので、そこのボタンを押してpull +requestしてください。入力フォームがでてきますが、コミットしたときメッセージで十分なのでそのままpull +requestしてOKです! これで、ひととおりの作業は完了しました。 -まだまだできるよ!という人は 「作業ごとにやること」の「groonga本家に追従」に戻って繰り返します。 - +まだまだできるよ!という人は +「作業ごとにやること」の「groonga本家に追従」に戻って繰り返します。 Added: ja/_posts/2013-07-22-qiita-translation.md (+41 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-07-22-qiita-translation.md 2016-02-07 10:50:24 +0900 (db960da) @@ -0,0 +1,41 @@ +--- +layout: post.ja +title: 週刊groonga翻訳始めました +description: 週刊groonga翻訳始めました +--- + +週刊groonga翻訳始めました +------------------------- + +毎週木曜に [Qiita](http://qiita.com/) +にてgroongaやmroonga,rroongaなどのトピックを一つ投稿するという取り組みを続けています。 + +それなりにトピックがたまってきたので、これを翻訳して英語圏にも情報を発信していこうかと考えています。 + +ただ、現状リソースがあまり足りていないので、ユーザのみなさんにも協力していただけたらいいなと思っています。 + +具体的には以下のようにして作業をすすめていきたいと思います。 + +1. +Qiitaに英語圏向けのノウハウ・Tipsの投稿ページを元記事を複製して用意する +(この時点では内容は日本語のまま) + +2. 記事ページをみんなでよってたかって翻訳する このときには「 +[編集リクエスト](http://blog.qiita.com/post/40808687185/patch-request-release) +」を使って記事を更新します。 + +3. 記事の翻訳が完成したら、内容に応じて +[blogroonga](http://groonga.org/blog/) や [mroonga +blog](http://mroonga.org/blog/) に掲載します。 + +4. Tumblrでリブログ + +1,3,4はgroonga開発チームでやるとして、2.のところを手分けして実現できたらいいなぁと思っています。 + +まずは、「 +[groongaでキーワードごとに重み付けをして検索するには](http://qiita.com/groonga/items/a964be5d754a52f00512) +」の翻訳からはじめていきます。作業対象の投稿は以下の通りです。 + +- [How to search specific keyword with assgined weights to each + column](http://qiita.com/groonga/items/43a4cc07512c63193a07) + Deleted: ja/_posts/2013-07-22-qiita-translation.textile (+0 -33) 100644 =================================================================== --- ja/_posts/2013-07-22-qiita-translation.textile 2016-02-07 10:35:40 +0900 (12eefe8) +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: post.ja -title: 週刊groonga翻訳始めました -description: 週刊groonga翻訳始めました ---- - -h2. 週刊groonga翻訳始めました - -毎週木曜に "Qiita":http://qiita.com/ にてgroongaやmroonga,rroongaなどのトピックを一つ投稿するという取り組みを続けています。 - -それなりにトピックがたまってきたので、これを翻訳して英語圏にも情報を発信していこうかと考えています。 - -ただ、現状リソースがあまり足りていないので、ユーザのみなさんにも協力していただけたらいいなと思っています。 - -具体的には以下のようにして作業をすすめていきたいと思います。 - -1. Qiitaに英語圏向けのノウハウ・Tipsの投稿ページを元記事を複製して用意する (この時点では内容は日本語のまま) - -2. 記事ページをみんなでよってたかって翻訳する このときには「 "編集リクエスト":http://blog.qiita.com/post/40808687185/patch-request-release 」を使って記事を更新します。 - - -3. 記事の翻訳が完成したら、内容に応じて "blogroonga":http://groonga.org/blog/ や "mroonga blog":http://mroonga.org/blog/ に掲載します。 - -4. Tumblrでリブログ - -1,3,4はgroonga開発チームでやるとして、2.のところを手分けして実現できたらいいなぁと思っています。 - -まずは、「 "groongaでキーワードごとに重み付けをして検索するには":http://qiita.com/groonga/items/a964be5d754a52f00512 」の翻訳からはじめていきます。作業対象の投稿は以下の通りです。 - -* "How to search specific keyword with assgined weights to each column":http://qiita.com/groonga/items/43a4cc07512c63193a07 - - - Added: ja/_posts/2013-07-29-release.md (+113 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-07-29-release.md 2016-02-07 10:50:24 +0900 (8e5cd7f) @@ -0,0 +1,113 @@ +--- +layout: post.ja +title: groonga 3.0.6リリース +description: groonga 3.0.6をリリースしました! +--- + +今日は肉の日ですね。 + +groonga 3.0.6リリース +--------------------- + +[groonga 3.0.6](/ja/docs/news.html#release-3-0-6) をリリースしました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +これまでも、groonga.orgにて [利用事例](http://groonga.org/ja/users/) +を紹介してきましたが、それとは別に、 [gihyo.jp](http://gihyo.jp/) +にてgroonga関連の記事の連載を +[隔週連載groonga](http://gihyo.jp/dev/clip/01/groonga) +としてはじめました。 + +まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機です。現在第7回まで公開しています。先月は第6回までだったので記事が一本新たに追加されました。 + +- [第7回 [実録] + MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(2)](http://gihyo.jp/dev/clip/01/groonga/0007) + +第一回から第六回までの過去記事については +[隔週連載groonga](http://gihyo.jp/dev/clip/01/groonga) +のページを参照してください。 + +### クエリ構文で特別な文字のエスケープのサポート + +今回のリリースではクエリ構文で特別な文字のエスケープのサポートをしました。 + +クエリ構文における特別扱いされる文字の詳細については +[エスケープ](http://groonga.org/ja/docs/reference/grn_expr/query_syntax.html#escape) +を参照してください。 + +例えば、特別な文字の一つである `(` そのものを検索したいときには、 `(` +をgroongaに渡してあげれば良いことになります。 + +ただし、実際にgroongaに渡すまでにはいくつか以下のような階層があるので使い方には注意が必要です。(下になるにつれてより低レイヤ) + +- シェル(bashなど) +- groongaのコマンラインインタフェース(groongaコマンドのプロンプト) +- groongaのクエリパーサー + +ここでのエスケープとはgroongaのクエリパーサーに `(` +が渡されるようにしなければなりません。 +そのため、 `` +をその上位層で解釈してしまう場合にはそのことを踏まえてエスケープしないといけません。 + +この場合低レイヤから逆にたどって考えてみましょう。 + +- groongaのクエリパーサーは `(` が渡される必要がある +- groongaのコマンラインインタフェースはエスケープを解釈するので `(` + が必要。 +- シェル(bashなど)もエスケープを解釈するので `(` が必要。 + +最終的にシェルのコマンドプロンプトでクエリを実行する場合には `(` +としなければなりません。 + +これを具体例で確認してみましょう。サンプルデータとスキーマは以下とします。(escape.grn) + + table_create Memos TABLE_PAT_KEY ShortText + + table_create Contents TABLE_PAT_KEY ShortText --default_tokenizer TokenDelimit --normalizer NormalizerAuto + column_create Contents entries_key_index COLUMN_INDEX Memos _key + + load --table Memos + [ + {"_key": "(仮)"} + ] + +サンプルデータとスキーマのファイルescape.grnをシェルのコマンドプロンプトから投入します。 + + % groonga -n testdb/db < escape.grn + +この状態で `(仮` を検索するには以下のクエリを実行します。 + + % groonga testdb/db select Memos --match_columns _key --query "(仮" + +シングルクォートの場合には以下のクエリで検索できます。 + + % groonga testdb/db select Memos --match_columns _key --query '(仮' + +では、groongaのコマンドラインインタフェースから検索する場合を確認してみます。groongaのコマンドラインインタフェースの場合にはシェルによるエスケープの解釈がなくなるので、そのぶんのエスケープが不要です。 + + % groonga testdb/db + > select Memos --match_columns _key --query "(仮" + +シングルクォートの場合には以下のクエリで検索できます。 + + > select Memos --match_columns _key --query '(仮' + +### Fedora 19のサポート + +今回のリリースでは、7月2日にリリースされたFedora +19のサポートを開始しました。 + +そのかわり、Fedora 18のサポートは終了しています。 + +Fedoraプロジェクトにてパッケージのリリースをしていますが、Fedoraの一般ユーザが利用するリポジトリに入るまでに2週間程度のタイムラグがあるので、独自にリポジトリでもパッケージを提供しています。 + +パッケージの内容は同じなので、独自のリポジトリからyumでインストールするのとFedoraプロジェクトからyumでインストールのに違いはありません。 + +### さいごに + +3.0.5からの詳細な変更点は [3.0.6リリース +2013/07/29](/ja/docs/news.html#release-3-0-6) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2013-07-29-release.textile (+0 -108) 100644 =================================================================== --- ja/_posts/2013-07-29-release.textile 2016-02-07 10:35:40 +0900 (2c454db) +++ /dev/null @@ -1,108 +0,0 @@ ---- -layout: post.ja -title: groonga 3.0.6リリース -description: groonga 3.0.6をリリースしました! ---- - -今日は肉の日ですね。 - -h2. groonga 3.0.6リリース - -"groonga 3.0.6":/ja/docs/news.html#release-3-0-6 をリリースしました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - - -これまでも、groonga.orgにて "利用事例":http://groonga.org/ja/users/ を紹介してきましたが、それとは別に、 "gihyo.jp":http://gihyo.jp/ にてgroonga関連の記事の連載を "隔週連載groonga":http://gihyo.jp/dev/clip/01/groonga としてはじめました。 - -まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機です。現在第7回まで公開しています。先月は第6回までだったので記事が一本新たに追加されました。 - -* "第7回 [実録] MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(2)":http://gihyo.jp/dev/clip/01/groonga/0007 - -第一回から第六回までの過去記事については "隔週連載groonga":http://gihyo.jp/dev/clip/01/groonga のページを参照してください。 - -h3. クエリ構文で特別な文字のエスケープのサポート - -今回のリリースではクエリ構文で特別な文字のエスケープのサポートをしました。 - -クエリ構文における特別扱いされる文字の詳細については "エスケープ":http://groonga.org/ja/docs/reference/grn_expr/query_syntax.html#escape を参照してください。 - -例えば、特別な文字の一つである @(@ そのものを検索したいときには、 @\(@ をgroongaに渡してあげれば良いことになります。 - -ただし、実際にgroongaに渡すまでにはいくつか以下のような階層があるので使い方には注意が必要です。(下になるにつれてより低レイヤ) - -* シェル(bashなど) -* groongaのコマンラインインタフェース(groongaコマンドのプロンプト) -* groongaのクエリパーサー - -ここでのエスケープとはgroongaのクエリパーサーに @\(@ が渡されるようにしなければなりません。 -そのため、 @\@ をその上位層で解釈してしまう場合にはそのことを踏まえてエスケープしないといけません。 - -この場合低レイヤから逆にたどって考えてみましょう。 - -* groongaのクエリパーサーは @\(@ が渡される必要がある -* groongaのコマンラインインタフェースはエスケープを解釈するので @\\\(@ が必要。 -* シェル(bashなど)もエスケープを解釈するので @\\\\\\(@ が必要。 - -最終的にシェルのコマンドプロンプトでクエリを実行する場合には @\\\\\\(@ としなければなりません。 - -これを具体例で確認してみましょう。サンプルデータとスキーマは以下とします。(escape.grn) - -<pre> -table_create Memos TABLE_PAT_KEY ShortText - -table_create Contents TABLE_PAT_KEY ShortText --default_tokenizer TokenDelimit --normalizer NormalizerAuto -column_create Contents entries_key_index COLUMN_INDEX Memos _key - -load --table Memos -[ -{"_key": "(仮)"} -] -</pre> - -サンプルデータとスキーマのファイルescape.grnをシェルのコマンドプロンプトから投入します。 - -<pre> -% groonga -n testdb/db < escape.grn -</pre> - -この状態で @(仮@ を検索するには以下のクエリを実行します。 - -<pre> -% groonga testdb/db select Memos --match_columns _key --query "\\\\\\(仮" -</pre> - -シングルクォートの場合には以下のクエリで検索できます。 - -<pre> -% groonga testdb/db select Memos --match_columns _key --query '\\\(仮' -</pre> - -では、groongaのコマンドラインインタフェースから検索する場合を確認してみます。groongaのコマンドラインインタフェースの場合にはシェルによるエスケープの解釈がなくなるので、そのぶんのエスケープが不要です。 - -<pre> -% groonga testdb/db -> select Memos --match_columns _key --query "\\\(仮" -</pre> - -シングルクォートの場合には以下のクエリで検索できます。 - -<pre> -> select Memos --match_columns _key --query '\\(仮' -</pre> - -h3. Fedora 19のサポート - -今回のリリースでは、7月2日にリリースされたFedora 19のサポートを開始しました。 - -そのかわり、Fedora 18のサポートは終了しています。 - -Fedoraプロジェクトにてパッケージのリリースをしていますが、Fedoraの一般ユーザが利用するリポジトリに入るまでに2週間程度のタイムラグがあるので、独自にリポジトリでもパッケージを提供しています。 - -パッケージの内容は同じなので、独自のリポジトリからyumでインストールするのとFedoraプロジェクトからyumでインストールのに違いはありません。 - -h3. さいごに - -3.0.5からの詳細な変更点は "3.0.6リリース 2013/07/29":/ja/docs/news.html#release-3-0-6 を確認してください。 - -それでは、groongaでガンガン検索してください! Added: ja/_posts/2013-08-12-reference-command-documentation.md (+187 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-08-12-reference-command-documentation.md 2016-02-07 10:50:24 +0900 (75bb34c) @@ -0,0 +1,187 @@ +--- +layout: post.ja +title: リファレンスコマンドのドキュメントをよいものにしていきませんか? +description: +リファレンスコマンドのドキュメントをよいものにしていきませんか? +--- + +リファレンスコマンドのドキュメントをよいものにしていきませんか? +--------------------------------------------------------------- + +長い間懸案であった、groongaのAPIのドキュメント化については @whombx +さんのおかげで一区切りつきました。そこで、次はリファレンスコマンドを整理する作業にとりかかりたいなぁと思っています。 + +ドキュメントを随時追加しているのですが、リファレンスマニュアルの +[コマンド](http://groonga.org/ja/docs/reference/command.html) +については、新旧のフォーマットが混在していて、統一されていないのが現在の課題となっています。 + +そこで、新しいフォーマットに統一する必要があるのですが、ここをお手伝いいただけると嬉しいです。 + +では具体的にどんなことをやればいいのかを説明します。基本的にはコマンドごとにpull +requestを送ってもらうと進めやすいです。 + +対象となるコマンドは次のとおりです。 + +- cache_limit +- check +- clearlock +- column_create +- column_list +- column_remove +- define_selector +- defrag +- delete +- dump +- log_level +- log_put +- log_reopen +- quit +- register +- shutdown +- status +- suggest +- table_list +- table_remove + +あまりGitHubでの作業に慣れていなくてもできるように、「最初にやること」と「作業ごとにやること」、「関数ごとにやること」に分けて順に説明します。 + +- 最初にやること +- 作業ごとにやること +- コマンドごとにやること + +### 最初にやること + +以下では、最初に一度だけ実施しておけば良いことを説明します。 + +#### 最初の設定 + +まずは、gitの設定をしましょう。すでにある程度gitを使っている場合には初期設定はすでに完了しているかも知れません。その場合には飛ばして構いません。 + + % git config --global user.name "あなたのユーザー名" + % git config --global user.email "あなたのメールアドレス" + +上記はコミットログに使われます。公開しても差し支えないユーザ名もしくはメールアドレスを設定します。 + +#### GitHubでforkする + +GitHubにアカウントがなければ用意してください。アカウントが用意できたら、ログインした状態で以下のURLにアクセスします。 + +- [groongaリポジトリをforkする](https://github.com/groonga/groonga/fork) + +リポジトリ選択画面でご自分のリポジトリへとforkしてください。 + +#### 作業用リポジトリの初期設定 + +次は作業用にforkしたリポジトリを手元にcloneします。このとき、本家の変更に追従するための設定を行います。 + + % git clone git �� github.com:(あなたのGitHubのアカウント)/groonga.git + % cd groonga + % git remote add upstream git �� github.com:groonga/groonga + +#### ドキュメントビルド用の初期設定 + +ドキュメントを生成するために以下を実行します。 + + % ./autogen.sh + % ./configure --enable-document + +ここまでで、「最初にやること」は完了です。次は「作業ごとにやること」へと進みます。 + +### 作業ごとにやること + +以下では作業ごとにやることを説明します。 + +#### groonga本家に追従する + +groonga本家の最新状態に追従して、作業がかぶらないようにします。 + + % git fetch --all + % git checkout master + % git rebase upstream/master + +最新の状態に追従できたら、「コマンドごとにやること」へと進みます。 + +### コマンドごとにやること + +以下では、例えば `cache_limit` +の作業をする場合で説明します。作業対象となるファイルは、リポジトリのdoc/source/reference/commands/以下にあります。 +`cache_limit` +の場合は、doc/source/reference/commands/cache_limit.txtとなります。 + +#### 作業用のブランチを作成 + +作業対象のブランチを作成します。 + + % git checkout -b cache-limit + +#### 編集作業 + +ドキュメントの体裁を以下のように変更します。 + +旧: + +- 名前 +- 書式 +- 説明 +- 引数 +- 返値 +- 例 + +新: + +- Summary (名前のセクションから移動) +- Syntax (書式のセクションから移動) +- Usage (例のセクションから移動) +- Parameters (引数のセクションから移動) +- Return value (返値のセクションから移動) + +新しいほうのフォーマットに直してあるものは +[コマンド一覧](/ja/docs/reference/command.html) +で見たときにコマンド名がボールド体で表記されます。 例えば +`column_rename` や `load` 、 `normalize` +コマンドなどは新しいスタイルになっています。 + +中には本文が英訳されていないものもありますが、英訳はしなくて構いません。 +新しいスタイルにドキュメントを更新するというのを機械的に行っていただければOKです! + +#### ドキュメントの確認 + +マークアップに問題がないか、HTMLを確認します。HTMLを生成するには以下のコマンドを実行します。 + + % cd doc/locale/en + % make html + +いつも使っているブラウザで該当ファイルを確認して、移動した内容が追加されていればOKです。 + + % firefox html/reference/commands/cache_limit.html + +#### コミット + +HTMLに問題がないことを確認できたら、コミットします。 + + % cd ${cloneしたディレクトリーのトップディレクトリー} + % git add doc/source/reference/commands/cache_limit.txt + % git commit + +コミットするときのメッセージについては、例えば以下のようにします。 + + doc: follow new markup guideline about cache_limit command documentation + +#### pushとpull request + +ご自分のリポジトリにpushして変更点をとりこめるように公開します。 + + % git push -u origin cache-limit + +ここで `cache_limit` は前の方の作業で作ったブランチ名です。 + +ブラウザで https://github.com/(GitHubのアカウント)/groonga を開くと「 +`cache-limit` 」ブランチをpull +requestする!みたいなUIができているので、そこのボタンを押してpull +requestしてください。入力フォームがでてきますが、コミットしたときメッセージで十分なのでそのままpull +requestしてOKです! + +これで、ひととおりの作業は完了しました。 + +まだまだできるよ!という人は +「作業ごとにやること」の「groonga本家に追従」に戻って繰り返します。 Deleted: ja/_posts/2013-08-12-reference-command-documentation.textile (+0 -191) 100644 =================================================================== --- ja/_posts/2013-08-12-reference-command-documentation.textile 2016-02-07 10:35:40 +0900 (8cac771) +++ /dev/null @@ -1,191 +0,0 @@ ---- -layout: post.ja -title: リファレンスコマンドのドキュメントをよいものにしていきませんか? -description: リファレンスコマンドのドキュメントをよいものにしていきませんか? ---- - -h2. リファレンスコマンドのドキュメントをよいものにしていきませんか? - -長い間懸案であった、groongaのAPIのドキュメント化については @whombx さんのおかげで一区切りつきました。そこで、次はリファレンスコマンドを整理する作業にとりかかりたいなぁと思っています。 - -ドキュメントを随時追加しているのですが、リファレンスマニュアルの "コマンド":http://groonga.org/ja/docs/reference/command.html については、新旧のフォーマットが混在していて、統一されていないのが現在の課題となっています。 - -そこで、新しいフォーマットに統一する必要があるのですが、ここをお手伝いいただけると嬉しいです。 - -では具体的にどんなことをやればいいのかを説明します。基本的にはコマンドごとにpull requestを送ってもらうと進めやすいです。 - -対象となるコマンドは次のとおりです。 - -* cache_limit -* check -* clearlock -* column_create -* column_list -* column_remove -* define_selector -* defrag -* delete -* dump -* log_level -* log_put -* log_reopen -* quit -* register -* shutdown -* status -* suggest -* table_list -* table_remove - -あまりGitHubでの作業に慣れていなくてもできるように、「最初にやること」と「作業ごとにやること」、「関数ごとにやること」に分けて順に説明します。 - -* 最初にやること -* 作業ごとにやること -* コマンドごとにやること - -h3. 最初にやること - -以下では、最初に一度だけ実施しておけば良いことを説明します。 - -h4. 最初の設定 - -まずは、gitの設定をしましょう。すでにある程度gitを使っている場合には初期設定はすでに完了しているかも知れません。その場合には飛ばして構いません。 - -<pre> -% git config --global user.name "あなたのユーザー名" -% git config --global user.email "あなたのメールアドレス" -</pre> - -上記はコミットログに使われます。公開しても差し支えないユーザ名もしくはメールアドレスを設定します。 - -h4. GitHubでforkする - -GitHubにアカウントがなければ用意してください。アカウントが用意できたら、ログインした状態で以下のURLにアクセスします。 - -* "groongaリポジトリをforkする":https://github.com/groonga/groonga/fork - -リポジトリ選択画面でご自分のリポジトリへとforkしてください。 - -h4. 作業用リポジトリの初期設定 - -次は作業用にforkしたリポジトリを手元にcloneします。このとき、本家の変更に追従するための設定を行います。 - -<pre> -% git clone git �� github.com:(あなたのGitHubのアカウント)/groonga.git -% cd groonga -% git remote add upstream git �� github.com:groonga/groonga -</pre> - -h4. ドキュメントビルド用の初期設定 - -ドキュメントを生成するために以下を実行します。 - -<pre> -% ./autogen.sh -% ./configure --enable-document -</pre> - -ここまでで、「最初にやること」は完了です。次は「作業ごとにやること」へと進みます。 - -h3. 作業ごとにやること - -以下では作業ごとにやることを説明します。 - -h4. groonga本家に追従する - -groonga本家の最新状態に追従して、作業がかぶらないようにします。 - -<pre> -% git fetch --all -% git checkout master -% git rebase upstream/master -</pre> - -最新の状態に追従できたら、「コマンドごとにやること」へと進みます。 - -h3. コマンドごとにやること - -以下では、例えば @cache_limit@ の作業をする場合で説明します。作業対象となるファイルは、リポジトリのdoc/source/reference/commands/以下にあります。 @cache_limit@ の場合は、doc/source/reference/commands/cache_limit.txtとなります。 - -h4. 作業用のブランチを作成 - -作業対象のブランチを作成します。 - -<pre> -% git checkout -b cache-limit -</pre> - -h4. 編集作業 - -ドキュメントの体裁を以下のように変更します。 - -旧: - -* 名前 -* 書式 -* 説明 -* 引数 -* 返値 -* 例 - -新: - -* Summary (名前のセクションから移動) -* Syntax (書式のセクションから移動) -* Usage (例のセクションから移動) -* Parameters (引数のセクションから移動) -* Return value (返値のセクションから移動) - -新しいほうのフォーマットに直してあるものは "コマンド一覧":/ja/docs/reference/command.html で見たときにコマンド名がボールド体で表記されます。 例えば @column_rename@ や @load@ 、 @normalize@ コマンドなどは新しいスタイルになっています。 - -中には本文が英訳されていないものもありますが、英訳はしなくて構いません。 -新しいスタイルにドキュメントを更新するというのを機械的に行っていただければOKです! - -h4. ドキュメントの確認 - -マークアップに問題がないか、HTMLを確認します。HTMLを生成するには以下のコマンドを実行します。 - -<pre> -% cd doc/locale/en -% make html -</pre> - -いつも使っているブラウザで該当ファイルを確認して、移動した内容が追加されていればOKです。 - -<pre> -% firefox html/reference/commands/cache_limit.html -</pre> - - -h4. コミット - -HTMLに問題がないことを確認できたら、コミットします。 - -<pre> -% cd ${cloneしたディレクトリーのトップディレクトリー} -% git add doc/source/reference/commands/cache_limit.txt -% git commit -</pre> - -コミットするときのメッセージについては、例えば以下のようにします。 - -<pre> -doc: follow new markup guideline about cache_limit command documentation -</pre> - -h4. pushとpull request - -ご自分のリポジトリにpushして変更点をとりこめるように公開します。 - -<pre> -% git push -u origin cache-limit -</pre> - -ここで @cache_limit@ は前の方の作業で作ったブランチ名です。 - -ブラウザで https://github.com/(GitHubのアカウント)/groonga を開くと「 @cache-limit@ 」ブランチをpull requestする!みたいなUIができているので、そこのボタンを押してpull requestしてください。入力フォームがでてきますが、コミットしたときメッセージで十分なのでそのままpull requestしてOKです! - -これで、ひととおりの作業は完了しました。 - -まだまだできるよ!という人は 「作業ごとにやること」の「groonga本家に追従」に戻って繰り返します。 - Renamed: ja/_posts/2013-08-29-release.md (+55 -39) 54% =================================================================== --- ja/_posts/2013-08-29-release.textile 2016-02-07 10:35:40 +0900 (23d2379) +++ ja/_posts/2013-08-29-release.md 2016-02-07 10:50:24 +0900 (e74c40f) @@ -6,87 +6,103 @@ description: groonga 3.0.7をリリースしました! 今日は肉の日ですね。 -h2. groonga 3.0.7リリース +groonga 3.0.7リリース +--------------------- -"groonga 3.0.7":/ja/docs/news.html#release-3-0-7 をリリースしました! +[groonga 3.0.7](/ja/docs/news.html#release-3-0-7) をリリースしました! -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) -これまでも、groonga.orgにて "利用事例":http://groonga.org/ja/users/ を紹介してきましたが、それとは別に、 "gihyo.jp":http://gihyo.jp/ にてgroonga関連の記事の連載を "隔週連載groonga":http://gihyo.jp/dev/clip/01/groonga としてはじめました。 +これまでも、groonga.orgにて [利用事例](http://groonga.org/ja/users/) +を紹介してきましたが、それとは別に、 [gihyo.jp](http://gihyo.jp/) +にてgroonga関連の記事の連載を +[隔週連載groonga](http://gihyo.jp/dev/clip/01/groonga) +としてはじめました。 まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機です。現在第9回まで公開しています。先月は第7回までだったので記事が二本新たに追加されました。 -* "第8回 CentOS6でのRPMパッケージを用いた MySQL 5.6 & mroonga & PHP 5.4 環境の作り方":http://gihyo.jp/dev/clip/01/groonga/0008 -* "第9回 mroongaを広く使ってもらうために大事なこと - mroongaのパッケージング動向の紹介":http://gihyo.jp/dev/clip/01/groonga/0009 +- [第8回 CentOS6でのRPMパッケージを用いた MySQL 5.6 & mroonga & PHP + 5.4 環境の作り方](http://gihyo.jp/dev/clip/01/groonga/0008) +- [第9回 mroongaを広く使ってもらうために大事なこと - + mroongaのパッケージング動向の紹介](http://gihyo.jp/dev/clip/01/groonga/0009) -第一回から第七回までの過去記事については "隔週連載groonga":http://gihyo.jp/dev/clip/01/groonga のページを参照してください。 +第一回から第七回までの過去記事については +[隔週連載groonga](http://gihyo.jp/dev/clip/01/groonga) +のページを参照してください。 -h3. APIドキュメント化しました +### APIドキュメント化しました -長い間懸案であったgroongaのAPIのドキュメント化作業について、どなたか協力していただけませんか、という "エントリ":{% post_url 2013-07-22-api-documentation %} を以前書きました。 +長い間懸案であったgroongaのAPIのドキュメント化作業について、どなたか協力していただけませんか、という +[エントリ]({%) post_url 2013-07-22-api-documentation %} +を以前書きました。 -具体的な手順をお知らせすることで、これだったらできるかもと思ってもらえたらいいなということだったのですが、結果として whombxさんがたくさんAPIドキュメント化作業のための pull requestを送ってくれました。 +具体的な手順をお知らせすることで、これだったらできるかもと思ってもらえたらいいなということだったのですが、結果として +whombxさんがたくさんAPIドキュメント化作業のための pull +requestを送ってくれました。 今月のリリースではその成果を反映しています。こうしてAPIドキュメントの作業を一段落させることができたのは、whombxさんの多大な貢献のおかげです。 ひとまず一段落しましたが、APIドキュメントの内容面での充実は今後も継続していきます。 -h3. groonga-httpdへ実験的なディレクティブを追加しました +### groonga-httpdへ実験的なディレクティブを追加しました より高機能なHTTPサーバーを提供するものとして、nginxをベースとしたgroonga-httpdを用意しています。 今回のリリースでは、このgroonga-httpdに指定できるディレクティブを追加しました。追加したディレクティブは次のとおりです。 -* groonga_log_path -* groonga_log_level +- groonga_log_path +- groonga_log_level それぞれ、ログの保存場所とログレベルを指定できるようにするディレクティブです。これまではデフォルトの値に固定されていました。 -groonga_log_pathにはログの保存先のパスを指定しますが、ログを無効にすることもできます。その場合には offを指定します。 +groonga_log_pathにはログの保存先のパスを指定しますが、ログを無効にすることもできます。その場合には +offを指定します。 例えば、以下のようにディレクティブを書くことで無効にできます。 -<pre> -location /d/ { - groonga_log_path off; -} -</pre> + location /d/ { + groonga_log_path off; + } -groonga_log_pathの詳細は "ドキュメント":http://groonga.org/ja/docs/reference/executables/groonga-httpd.html#groonga-log-path を参照してください。 +groonga_log_pathの詳細は +[ドキュメント](http://groonga.org/ja/docs/reference/executables/groonga-httpd.html#groonga-log-path) +を参照してください。 一方のログレベルに指定できるのは次の通りです。上から順に緊急性が高いメッセージで、デフォルトではnoticeが指定されたものとして扱われます。 -* emergency -* alert -* critical -* error -* warning -* notice -* debug -* dump -* none +- emergency +- alert +- critical +- error +- warning +- notice +- debug +- dump +- none また、ログレベルでログを無効にすることもできます。その場合には、groonga_log_levelにnoneを指定します。 -groonga_log_levelの詳細は "ドキュメント":http://groonga.org/ja/docs/reference/executables/groonga-httpd.html#groonga-log-level を参照してください。 +groonga_log_levelの詳細は +[ドキュメント](http://groonga.org/ja/docs/reference/executables/groonga-httpd.html#groonga-log-level) +を参照してください。 また、ログ以外にもクエリキャッシュの最大件数を設定するために次のディレクティブをサポートしました。 -* groonga_cache_limit +- groonga_cache_limit 設定した値はすべてのワーカーに適用されます。次の例はクエリキャッシュを1000件に設定します。 -<pre> -http { - groonga_cache_limit 1000; - ... -} -</pre> + http { + groonga_cache_limit 1000; + ... + } ワーカーごとに別の値を設定したい場合には複数のgroonga-httpd.confを使いわける必要があります。 -h3. さいごに +### さいごに -3.0.6からの詳細な変更点は "3.0.7リリース 2013/08/29":/ja/docs/news.html#release-3-0-7 を確認してください。 +3.0.6からの詳細な変更点は [3.0.7リリース +2013/08/29](/ja/docs/news.html#release-3-0-7) を確認してください。 それでは、groongaでガンガン検索してください! Added: ja/_posts/2013-09-29-release.md (+131 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-09-29-release.md 2016-02-07 10:50:24 +0900 (bb2915d) @@ -0,0 +1,131 @@ +--- +layout: post.ja +title: groonga 3.0.8リリース +description: groonga 3.0.8をリリースしました! +--- + +今日は肉の日ですね。 + +groonga 3.0.8リリース +--------------------- + +[groonga 3.0.8](/ja/docs/news.html#release-3-0-8) をリリースしました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +これまでも、groonga.orgにて [利用事例](http://groonga.org/ja/users/) +を紹介してきましたが、それとは別に [gihyo.jp](http://gihyo.jp/) +にてgroonga関連の記事の連載を +[隔週連載groonga](http://gihyo.jp/dev/clip/01/groonga) +として半年ほど続けていましたが、ついに最終回を迎えました。 + +まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機ではじめたこの連載がきっかけでgroongaに興味を持ってもらえたのではないでしょうか。 + +- [最終回 groongaの今と未来](http://gihyo.jp/dev/clip/01/groonga/0011) + +第一回から第十回までの過去記事については +[隔週連載groonga](http://gihyo.jp/dev/clip/01/groonga) +のページを参照してください。 + +### 管理画面のユーザビリティを改善しました + +groongaに付属している管理画面はとてもシンプルなものなのですが、今回 +[@orangain](https://twitter.com/orangain) +さんがいくつか使い勝手を改善するためのパッチを提供してくれました。ありがとうございます。 + +- エラー時読込中ダイアログが表示されたままにならないようにする +- 検索フォームにプレースホルダを表示する +- Enterキーで検索フォームを送信する + +### groonga-httpdでクエリログのカスタマイズをサポート + +groonga-httpdでもクエリログをカスタマイズできるようになりました。これまでは、クエリについてはaccess.logであったり、error.logなどを参考にするしかありませんでした。リクエストをGETですべて処理しているのであれば、それでも良いのですが、POSTで処理している場合、エラーが発生したときのクエリを特定するのが難しいという問題がありました。 + +今回groonga-httpdでクエリログをカスタマイズできるようになったことで問題となるクエリを特定しやすくなりました。カスタマイズするには、groonga-httpd.confにgroonga_query_log_pathディレクティブを指定します。 + +このディレクティブを指定しなかった場合には標準で次の場所にログが保存されていました。今回のリリースではデフォルトのログのパスもちょっと変わります。 + +- 変更前 /var/log/groonga/httpd/groonga.log +- 変更後 /var/log/groonga/httpd/groonga-query.log + +groonga_query_log_pathディレクティブはhttp,server,locationブロックいずれかに指定します。 + +locationブロックごとに指定できるようになったことで、ベータベースごとにクエリログを保存することができるようにもなりました。 + + location /d/ { + groonga on; + # You can disable query log for groonga. + groonga_query_log_path /var/log/groonga/httpd/groonga-location-d.log; + } + + location /d2/ { + groonga on; + # You can disable query log for groonga. + groonga_query_log_path /var/log/groonga/httpd/groonga-location-d2.log; + } + +ディレクティブの詳細については、 +[groonga-query-log-path](http://groonga.org/ja/docs/reference/executables/groonga-httpd.html#groonga-query-log-path) +のドキュメントを参照してください。 + +### deleteコマンドで参照関係のあるレコード削除をサポート + +今回のリリースでは、deleteコマンドで参照関係のあるレコードの削除をサポートしました。 + +例えば、とあるユーザーに関連付けられたURLがいくつかあるとします。ユーザー情報とURLのテーブルにそれぞれデータを格納して参照するようにするとなると、次のようなスキーマとなるでしょう。 + + table_create Users TABLE_HASH_KEY ShortText + table_create URLs TABLE_HASH_KEY ShortText + + column_create Users bookmarks COLUMN_VECTOR URLs + column_create URLs author COLUMN_SCALAR Users + + column_create URLs bookmarks_index COLUMN_INDEX Users bookmarks + +これに、サンプルデータをロードします。 + + load --table Users + [ + {"_key": "mori", "bookmarks": ["http://mroonga.org/", "http://groonga.org/", "http://ranguba.org/"]} + ] + + load --table URLs + [ + {"_key": "http://groonga.org/", "author": "mori"} + {"_key": "http://mroonga.org/", "author": "hayashi"} + ] + +このとき、UsersテーブルにURLsテーブルにあるキーを参照するデータが格納されています。そのため、単純に次のようにしてURLsテーブルの"http://groonga.org"というキーのレコードを削除することはできませんでした。 + + > delete URLs --key "http://groonga.org/" + +実際に実行してみると次のようなエラーが発生していました。 + + [ + [ + -2,1380092940.21387, + 0.000238895416259766, + "undeletable record (URLs:2) has value (bookmarks_index:1)", + [ + ["is_deletable","db.c",1564] + ] + ], + false + ] + +そのため、 `delete URLs --key "http://groonga.org/"` +でレコードを削除する前に、Usersで参照しているデータを削除してからURLsのレコードを削除するというステップを踏む必要がありました。 + +これが、今回の参照関係のあるレコードの削除のサポートで、 +`delete URLs --key "http://groonga.org/"` +を実行するとURLsの該当するレコードを削除できるようになりました。 + +これを実行しても、bookmarksカラムの関係ないデータは削除されません。"http://mroonga.org/"と"http://ranguba.org/"はそのままです。 + +### さいごに + +3.0.7からの詳細な変更点は [3.0.8リリース +2013/09/29](/ja/docs/news.html#release-3-0-8) を確認してください。 + +それでは、groongaでガンガン検索してください! Deleted: ja/_posts/2013-09-29-release.textile (+0 -125) 100644 =================================================================== --- ja/_posts/2013-09-29-release.textile 2016-02-07 10:35:40 +0900 (161ec29) +++ /dev/null @@ -1,125 +0,0 @@ ---- -layout: post.ja -title: groonga 3.0.8リリース -description: groonga 3.0.8をリリースしました! ---- - -今日は肉の日ですね。 - -h2. groonga 3.0.8リリース - -"groonga 3.0.8":/ja/docs/news.html#release-3-0-8 をリリースしました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -これまでも、groonga.orgにて "利用事例":http://groonga.org/ja/users/ を紹介してきましたが、それとは別に "gihyo.jp":http://gihyo.jp/ にてgroonga関連の記事の連載を "隔週連載groonga":http://gihyo.jp/dev/clip/01/groonga として半年ほど続けていましたが、ついに最終回を迎えました。 - -まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機ではじめたこの連載がきっかけでgroongaに興味を持ってもらえたのではないでしょうか。 - -* "最終回 groongaの今と未来":http://gihyo.jp/dev/clip/01/groonga/0011 - -第一回から第十回までの過去記事については "隔週連載groonga":http://gihyo.jp/dev/clip/01/groonga のページを参照してください。 - -h3. 管理画面のユーザビリティを改善しました - -groongaに付属している管理画面はとてもシンプルなものなのですが、今回 "@orangain":https://twitter.com/orangain さんがいくつか使い勝手を改善するためのパッチを提供してくれました。ありがとうございます。 - -* エラー時読込中ダイアログが表示されたままにならないようにする -* 検索フォームにプレースホルダを表示する -* Enterキーで検索フォームを送信する - -h3. groonga-httpdでクエリログのカスタマイズをサポート - -groonga-httpdでもクエリログをカスタマイズできるようになりました。これまでは、クエリについてはaccess.logであったり、error.logなどを参考にするしかありませんでした。リクエストをGETですべて処理しているのであれば、それでも良いのですが、POSTで処理している場合、エラーが発生したときのクエリを特定するのが難しいという問題がありました。 - -今回groonga-httpdでクエリログをカスタマイズできるようになったことで問題となるクエリを特定しやすくなりました。カスタマイズするには、groonga-httpd.confにgroonga_query_log_pathディレクティブを指定します。 - -このディレクティブを指定しなかった場合には標準で次の場所にログが保存されていました。今回のリリースではデフォルトのログのパスもちょっと変わります。 - -* 変更前 /var/log/groonga/httpd/groonga.log -* 変更後 /var/log/groonga/httpd/groonga-query.log - -groonga_query_log_pathディレクティブはhttp,server,locationブロックいずれかに指定します。 - -locationブロックごとに指定できるようになったことで、ベータベースごとにクエリログを保存することができるようにもなりました。 - -<pre> -location /d/ { - groonga on; - # You can disable query log for groonga. - groonga_query_log_path /var/log/groonga/httpd/groonga-location-d.log; -} - -location /d2/ { - groonga on; - # You can disable query log for groonga. - groonga_query_log_path /var/log/groonga/httpd/groonga-location-d2.log; -} -</pre> - -ディレクティブの詳細については、 "groonga-query-log-path":http://groonga.org/ja/docs/reference/executables/groonga-httpd.html#groonga-query-log-path のドキュメントを参照してください。 - -h3. deleteコマンドで参照関係のあるレコード削除をサポート - -今回のリリースでは、deleteコマンドで参照関係のあるレコードの削除をサポートしました。 - -例えば、とあるユーザーに関連付けられたURLがいくつかあるとします。ユーザー情報とURLのテーブルにそれぞれデータを格納して参照するようにするとなると、次のようなスキーマとなるでしょう。 - -<pre> -table_create Users TABLE_HASH_KEY ShortText -table_create URLs TABLE_HASH_KEY ShortText - -column_create Users bookmarks COLUMN_VECTOR URLs -column_create URLs author COLUMN_SCALAR Users - -column_create URLs bookmarks_index COLUMN_INDEX Users bookmarks -</pre> - -これに、サンプルデータをロードします。 - -<pre> -load --table Users -[ -{"_key": "mori", "bookmarks": ["http://mroonga.org/", "http://groonga.org/", "http://ranguba.org/"]} -] - -load --table URLs -[ -{"_key": "http://groonga.org/", "author": "mori"} -{"_key": "http://mroonga.org/", "author": "hayashi"} -] -</pre> - -このとき、UsersテーブルにURLsテーブルにあるキーを参照するデータが格納されています。そのため、単純に次のようにしてURLsテーブルの"http://groonga.org"というキーのレコードを削除することはできませんでした。 - -<pre> -> delete URLs --key "http://groonga.org/" -</pre> - -実際に実行してみると次のようなエラーが発生していました。 - -<pre> -[ - [ - -2,1380092940.21387, - 0.000238895416259766, - "undeletable record (URLs:2) has value (bookmarks_index:1)", - [ - ["is_deletable","db.c",1564] - ] - ], - false -] -</pre> - -そのため、 @delete URLs --key "http://groonga.org/"@ でレコードを削除する前に、Usersで参照しているデータを削除してからURLsのレコードを削除するというステップを踏む必要がありました。 - -これが、今回の参照関係のあるレコードの削除のサポートで、 @delete URLs --key "http://groonga.org/"@ を実行するとURLsの該当するレコードを削除できるようになりました。 - -これを実行しても、bookmarksカラムの関係ないデータは削除されません。"http://mroonga.org/"と"http://ranguba.org/"はそのままです。 - -h3. さいごに - -3.0.7からの詳細な変更点は "3.0.8リリース 2013/09/29":/ja/docs/news.html#release-3-0-8 を確認してください。 - -それでは、groongaでガンガン検索してください! Renamed: ja/_posts/2013-10-29-release.md (+26 -19) 64% =================================================================== --- ja/_posts/2013-10-29-release.textile 2016-02-07 10:35:40 +0900 (25c5e3e) +++ ja/_posts/2013-10-29-release.md 2016-02-07 10:50:24 +0900 (fe0fb71) @@ -6,13 +6,15 @@ description: Groonga 3.0.9をリリースしました! 今日は肉の日ですね。 -h2. Groonga 3.0.9リリース +Groonga 3.0.9リリース +--------------------- -"Groonga 3.0.9":/ja/docs/news.html#release-3-0-9 をリリースしました! +[Groonga 3.0.9](/ja/docs/news.html#release-3-0-9) をリリースしました! -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) -h3. HTTPサーバーでgroonga_cache_limitディレクティブのサポート +### HTTPサーバーでgroonga_cache_limitディレクティブのサポート Groongaではgroonga-httpdというnginxをベースとしたHTTPサーバーを提供しています。このHTTPサーバーでキャッシュサイズをカスタマイズするためのディレクティブとしてgroonga_cache_limitを追加しました。 @@ -20,32 +22,37 @@ Groongaではgroonga-httpdというnginxをベースとしたHTTPサーバーを 例えば、locationブロック内だと次のようにして指定します。 -<pre> -location /d/ { - groonga on; - # You can customize query cache limit for groonga. - groonga_cache_limit 100; -} -</pre> + location /d/ { + groonga on; + # You can customize query cache limit for groonga. + groonga_cache_limit 100; + } 従来はこのディレクティブがなかったので、複数のワーカープロセスでキャッシュサイズを変更するためにcache_limitコマンドを実行しても特定のワーカープロセスに限定して設定することができませんでした。 -そのためすべてのワーカープロセスで必ずしも同じキャッシュサイズに設定できないという問題がありました。(特定のワーカープロセスが常にcache_limitを処理すると、他のワーカープロセスのキャッシュサイズが変わらないということです) この問題をgroonga_cache_limitディレクティブで、解決することができます。 +そのためすべてのワーカープロセスで必ずしも同じキャッシュサイズに設定できないという問題がありました。(特定のワーカープロセスが常にcache_limitを処理すると、他のワーカープロセスのキャッシュサイズが変わらないということです) +この問題をgroonga_cache_limitディレクティブで、解決することができます。 -h3. パフォーマンスチューニングに関するドキュメントの追加 +### パフォーマンスチューニングに関するドキュメントの追加 Groongaのパフォーマンスチューニングに関するドキュメントを追加しました。 Groongaを使っていて、対象となるデータ件数が増加するに従って、当初は問題にならなかったパフォーマンスの低下により何らかの対策が必要になることがあります。典型的な例がプロセスが扱えるファイル数や使用するメモリに関してです。 -チューニングに関しては次の "ドキュメント":http://groonga.org/ja/docs/reference/tuning.html を参照してください。 +チューニングに関しては次の +[ドキュメント](http://groonga.org/ja/docs/reference/tuning.html) +を参照してください。 -h3. Ubuntu 13.10 (Saucy Salamander)のサポート +### Ubuntu 13.10 (Saucy Salamander)のサポート -今回のリリースから10月17日にリリースされたUbuntu 13.10のサポートをはじめました。 +今回のリリースから10月17日にリリースされたUbuntu +13.10のサポートをはじめました。 -具体的なインストール手順については、次の Ubuntu 13.10向けの "ドキュメント":http://groonga.org/ja/docs/install/ubuntu.html#saucy-salamander を参照してください。 +具体的なインストール手順については、次の Ubuntu 13.10向けの +[ドキュメント](http://groonga.org/ja/docs/install/ubuntu.html#saucy-salamander) +を参照してください。 -h3. さいごに +### さいごに -3.0.8からの詳細な変更点は "3.0.9リリース 2013/10/29":/ja/docs/news.html#release-3-0-9 を確認してください。 +3.0.8からの詳細な変更点は [3.0.9リリース +2013/10/29](/ja/docs/news.html#release-3-0-9) を確認してください。 それでは、Groongaでガンガン検索してください! Renamed: ja/_posts/2013-10-30-use-capitalized-notation.md (+84 -99) 55% =================================================================== --- ja/_posts/2013-10-30-use-capitalized-notation.textile 2016-02-07 10:35:40 +0900 (c77e007) +++ ja/_posts/2013-10-30-use-capitalized-notation.md 2016-02-07 10:50:24 +0900 (61011b7) @@ -4,132 +4,125 @@ title: groongaからGroongaへ - ドキュメントの表記を一緒に更新 description: ドキュメントの表記を一緒に更新しませんか? --- -h2. groongaからGroongaへ - ドキュメントの表記を一緒に更新しませんか? +groongaからGroongaへ - ドキュメントの表記を一緒に更新しませんか? +---------------------------------------------------------------- リリースアナウンスや、公式ドキュメントをみてもうすでに気づいた人がいるかもしれませんが、Groonga関連のソフトウェアの表記を「Groonga」(先頭が大文字)へ統一する作業をすすめています。 それなりに分量があるので、ドキュメントに散らばっている「groonga」表記の統一をお手伝いしてくれる人を募集します。 詳細は後述する「協力者募集」を参照してください。コードを書かなくてもできることです。 -h3. 表記の統一について +### 表記の統一について これまでは、日本語の文の中や英語の文の途中では「groonga」(先頭も小文字)という表記で、英語の文の先頭では「Groonga」(先頭が大文字)という表記を使ったりしていました。これからは、日本語のときでも「Groonga」(先頭が大文字)を使うようにします。 -h3. 表記の統一の理由について +### 表記の統一の理由について 先頭を大文字に統一する理由は世界中で広く使われるようにしたいからです。 -* 英語での表記 - テキストで大文字始まりだと固有名詞として認識してもらいやすい -* 日本語での表記 - 英語との統一性を重視して大文字に揃える +- 英語での表記 - + テキストで大文字始まりだと固有名詞として認識してもらいやすい +- 日本語での表記 - 英語との統一性を重視して大文字に揃える 海外の人と英語でやりとりをすると、こちらは「groonga」(先頭小文字)で書いても「Groonga」(先頭大文字)で返ってくることが何度もありました。(あったと森さんから聞いています。)このことから、英語圏の人にとってはソフトウェアの名前は先頭大文字が普通なんだろうと感じるようになりました。Groonga関連の ソフトウェアは海外でも広く使われるようにしたいので、より海外でなじみやすい表記に統一することにしました。 -h3. ロゴへの影響について +### ロゴへの影響について ロゴについては見栄えを重視しているので「groonga」(先頭も小文字)のままです。 したがってこれまで通り変更はありません。 次のように、テキストとロゴで表記が違う例というのはそれなりにあるためです。 -* "Ubuntu":http://www.ubuntu.com/ (ロゴは小文字) -* "Debian":http://www.debian.or.jp/ (ロゴは大文字) -* "Red Hat":http://jp.redhat.com/ (ロゴはスペースなしの小文字) +- [Ubuntu](http://www.ubuntu.com/) (ロゴは小文字) +- [Debian](http://www.debian.or.jp/) (ロゴは大文字) +- [Red Hat](http://jp.redhat.com/) (ロゴはスペースなしの小文字) -h3. 協力者募集 +### 協力者募集 - -具体的にどんなことをやればいいのかを説明します。基本的にはドキュメントのソースファイルごとにごとにpull requestを送ってもらうと進めやすいです。 +具体的にどんなことをやればいいのかを説明します。基本的にはドキュメントのソースファイルごとにごとにpull +requestを送ってもらうと進めやすいです。 対象となるファイルはdoc/sourceディレクトリ以下の拡張子が「.txt」となっているファイルです。 あまりGitHubでの作業に慣れていなくてもできるように、「最初にやること」と「作業ごとにやること」、「ファイルごとにやること」に分けて順に説明します。 -* 最初にやること -* 作業ごとにやること -* ファイルごとにやること +- 最初にやること +- 作業ごとにやること +- ファイルごとにやること -h4. 最初にやること +#### 最初にやること 以下では、最初に一度だけ実施しておけば良いことを説明します。 -h5. 最初の設定 +##### 最初の設定 まずは、gitの設定をしましょう。すでにある程度gitを使っている場合には初期設定はすでに完了しているかも知れません。その場合には飛ばして構いません。 -<pre> -% git config --global user.name "あなたのユーザー名" -% git config --global user.email "あなたのメールアドレス" -</pre> + % git config --global user.name "あなたのユーザー名" + % git config --global user.email "あなたのメールアドレス" 上記はコミットログに使われます。公開しても差し支えないユーザ名もしくはメールアドレスを設定します。 -h5. GitHubでforkする +##### GitHubでforkする GitHubにアカウントがなければ用意してください。アカウントが用意できたら、ログインした状態で以下のURLにアクセスします。 -* "Groongaリポジトリをforkする":https://github.com/groonga/groonga/fork +- [Groongaリポジトリをforkする](https://github.com/groonga/groonga/fork) リポジトリ選択画面でご自分のリポジトリへとforkしてください。 -h5. 作業用リポジトリの初期設定 +##### 作業用リポジトリの初期設定 次は作業用にforkしたリポジトリを手元にcloneします。このとき、本家の変更に追従するための設定を行います。 -<pre> -% git clone git �� github.com:(あなたのGitHubのアカウント)/groonga.git -% cd groonga -% git remote add upstream git �� github.com:groonga/groonga -</pre> + % git clone git �� github.com:(あなたのGitHubのアカウント)/groonga.git + % cd groonga + % git remote add upstream git �� github.com:groonga/groonga -h5. ドキュメントビルド用の初期設定 +##### ドキュメントビルド用の初期設定 ドキュメントを生成するために以下を実行します。 -<pre> -% ./autogen.sh -% ./configure --enable-document -</pre> + % ./autogen.sh + % ./configure --enable-document ここまでで、「最初にやること」は完了です。次は「作業ごとにやること」へと進みます。 -h4. 作業ごとにやること +#### 作業ごとにやること 以下では作業ごとにやることを説明します。 -h5. Groonga本家に追従する +##### Groonga本家に追従する Groonga本家の最新状態に追従して、作業がかぶらないようにします。 -<pre> -% git fetch --all -% git checkout master -% git rebase upstream/master -</pre> + % git fetch --all + % git checkout master + % git rebase upstream/master 最新の状態に追従できたら、「ファイルごとにやること」へと進みます。 -h4. ファイルごとにやること +#### ファイルごとにやること -以下では、例えば http://groonga.org/docs/install/windows.html を更新する場合で説明します。作業対象となるファイルは、リポジトリのdoc/source/ディレクトリ以下にあります。 今回は、doc/source/install/windows.txtを変更する例で説明します。 +以下では、例えば http://groonga.org/docs/install/windows.html +を更新する場合で説明します。作業対象となるファイルは、リポジトリのdoc/source/ディレクトリ以下にあります。 +今回は、doc/source/install/windows.txtを変更する例で説明します。 もうすでに統一作業が完了しているファイルについてはファイルの先頭に次のマークアップがしてあります。 実際の作業をするときには、まだそのマークアップがされていないファイルを選んでください。 -<pre> -.. -*- rst -*- -.. Groonga Project -</pre> + .. -*- rst -*- + .. Groonga Project -h5. 作業用のブランチを作成 +##### 作業用のブランチを作成 -作業対象のブランチを作成します。install/windows.txtを変更するので、 ブランチ名を @use-capitalized-notation-install-windows@ とします。 +作業対象のブランチを作成します。install/windows.txtを変更するので、 +ブランチ名を `use-capitalized-notation-install-windows` とします。 -<pre> -% git checkout -b use-capitalized-notation-install-windows -</pre> + % git checkout -b use-capitalized-notation-install-windows -h5. 編集作業 +##### 編集作業 ドキュメントの「groonga」という表記を「Groonga」へと変更します。 @@ -138,83 +131,75 @@ h5. 編集作業 変更する箇所: -* groongaという単語をGroongaに置き換える +- groongaという単語をGroongaに置き換える 変更しない箇所: -* groongaをURLの一部として使っている箇所 -* groongaをパッケージ名として使っている箇所 -* groongaをコマンド名として使っている箇所 -* groongaを実行例として使っている箇所 - * 行末が::で終わっている箇所の次のブロックは実行例となります。 +- groongaをURLの一部として使っている箇所 +- groongaをパッケージ名として使っている箇所 +- groongaをコマンド名として使っている箇所 +- groongaを実行例として使っている箇所 + * 行末が::で終わっている箇所の次のブロックは実行例となります。 例: -<pre> - Start command prompt ``cmd.exe`` and download x64 zip archive by default browser:: + Start command prompt ``cmd.exe`` and download x64 zip archive by default browser:: + + > "c:Program FilesInternet Exploreriexplore.exe" http://packages.groonga.org/windows/groonga/groonga-3.0.9-x64.zip - > "c:\\Program Files\\Internet Explorer\\iexplore.exe" http://packages.groonga.org/windows/groonga/groonga-3.0.9-x64.zip -</pre> +- groongaを特別な記法として扱っている箇所 + * 行の先頭が".. + "となっている箇所に含まれるgroongaという単語は実行時のログを埋め込んだりするためのマークアップです。 -* groongaを特別な記法として扱っている箇所 - * 行の先頭が".. "となっている箇所に含まれるgroongaという単語は実行時のログを埋め込んだりするためのマークアップです。 - 例: -<pre> -.. groonga-command -.. database: groonga-httpd -.. include:: ../../example/reference/executables/groonga-httpd.log -.. /d/status -</pre> + .. groonga-command + .. database: groonga-httpd + .. include:: ../../example/reference/executables/groonga-httpd.log + .. /d/status -h4. ドキュメントの確認 +#### ドキュメントの確認 マークアップに問題がないか、HTMLを確認します。HTMLを生成するには以下のコマンドを実行します。 -<pre> -% cd doc/locale/en -% make html -</pre> + % cd doc/locale/en + % make html いつも使っているブラウザで該当ファイルを確認して、変更した内容が反映されていればOKです。 -<pre> -% firefox html/install/windows.html -</pre> + % firefox html/install/windows.html - -h4. コミット +#### コミット HTMLに問題がないことを確認できたら、コミットします。 -<pre> -% cd ${cloneしたディレクトリーのトップディレクトリー} -% git add doc/source/install/windows.txt -% git commit -</pre> + % cd ${cloneしたディレクトリーのトップディレクトリー} + % git add doc/source/install/windows.txt + % git commit コミットするときのメッセージについては、例えば以下のようにします。 -<pre> -doc: use "Groonga" notation -</pre> + doc: use "Groonga" notation -h4. pushとpull request +#### pushとpull request ご自分のリポジトリにpushして変更点をとりこめるように公開します。 -<pre> -% git push -u origin use-capitalized-notation-install-windows -</pre> + % git push -u origin use-capitalized-notation-install-windows -ここで @use-capitalized-notation-install-windows@ は前の方の作業で作ったブランチ名です。 +ここで `use-capitalized-notation-install-windows` +は前の方の作業で作ったブランチ名です。 -"GitHub #121":https://github.com/groonga/groonga/pull/121 はpull requestのサンプルです。 +[GitHub #121](https://github.com/groonga/groonga/pull/121) はpull +requestのサンプルです。 -ブラウザで https://github.com/(GitHubのアカウント)/groonga を開くと「 @use-capitalized-notation-install-windows@ 」ブランチをpull requestする!みたいなUIができているので、そこのボタンを押してpull requestしてください。入力フォームがでてきますが、コミットしたときメッセージで十分なのでそのままpull requestしてOKです! +ブラウザで https://github.com/(GitHubのアカウント)/groonga を開くと「 +`use-capitalized-notation-install-windows` 」ブランチをpull +requestする!みたいなUIができているので、そこのボタンを押してpull +requestしてください。入力フォームがでてきますが、コミットしたときメッセージで十分なのでそのままpull +requestしてOKです! これで、ひととおりの作業は完了しました。 -まだまだできるよ!という人は 「作業ごとにやること」の「Groonga本家に追従」に戻って繰り返します。 - +まだまだできるよ!という人は +「作業ごとにやること」の「Groonga本家に追従」に戻って繰り返します。 Renamed: ja/_posts/2013-11-25-groonga-night-4.md (+29 -15) 50% =================================================================== --- ja/_posts/2013-11-25-groonga-night-4.textile 2016-02-07 10:35:40 +0900 (de152ea) +++ ja/_posts/2013-11-25-groonga-night-4.md 2016-02-07 10:50:24 +0900 (5142206) @@ -1,16 +1,22 @@ --- layout: post.ja -title: Groonga勉強会「全文検索エンジンGroongaを囲む夕べ 4」開催のお知らせ -description: 今年もGroonga勉強会「全文検索エンジンGroongaを囲む夕べ 4」を開催します! +title: Groonga勉強会「全文検索エンジンGroongaを囲む夕べ +4」開催のお知らせ +description: 今年もGroonga勉強会「全文検索エンジンGroongaを囲む夕べ +4」を開催します! --- h2. Groonga勉強会「全文検索エンジンGroongaを囲む夕べ 4」開催のお知らせ -今年も「いい肉の日」である11/29に、「 "全文検索エンジンGroongaを囲む夕べ 4":http://atnd.org/events/43461 」と題して第4回目のGroonga勉強会を開催します! -これまでに、2010年に "第1回目":http://atnd.org/events/9234 、2011年に "第2回目":http://atnd.org/events/20446 、2012年に "第3回目":http://atnd.org/events/33070 のgroonga勉強会を開催しました。 +今年も「いい肉の日」である11/29に、「 [全文検索エンジンGroongaを囲む夕べ +4](http://atnd.org/events/43461) +」と題して第4回目のGroonga勉強会を開催します! +これまでに、2010年に [第1回目](http://atnd.org/events/9234) 、2011年に +[第2回目](http://atnd.org/events/20446) 、2012年に +[第3回目](http://atnd.org/events/33070) のgroonga勉強会を開催しました。 -"第1回目、第2回目、第3回目での講演資料":http://groonga.org/ja/publication/ +[第1回目、第2回目、第3回目での講演資料](http://groonga.org/ja/publication/) -h3. 今回のコンセプト +### 今回のコンセプト 昨年は、ユーザーさんがどのようにGroongaを使っているかというのをコンセプトに実施しました。今回のコンセプトは「Groonga関連情報全部出し」です。 @@ -20,28 +26,36 @@ Groongaは地味ながらもコツコツと改良を続けていく開発スタ もちろん、ユーザーさんがどのようにGroongaを使っているかも発表してもらいます。Groonga関連情報全部出しのために開催時間の枠を今回はどどーんと拡大しました。 -h3. 会場 +### 会場 -今回の会場は "株式会社ディー・エヌ・エー":http://dena.com/company/access.html さんにご提供いただけることになりました。ありがとうございます! +今回の会場は +[株式会社ディー・エヌ・エー](http://dena.com/company/access.html) +さんにご提供いただけることになりました。ありがとうございます! -h3. 日時 +### 日時 2013/11/29 (金)17:00-21:00 ※21:00から同じ場所で懇親会を予定しています。 -※開場は16:30からです。16:30 - 17:00の間「開発者からの質問コーナー」を設けるので早めにくるとGroonga開発者の森さんや、Mroonga開発者の斯波さんにいろいろ聞けますよ! +※開場は16:30からです。16:30 - +17:00の間「開発者からの質問コーナー」を設けるので早めにくるとGroonga開発者の森さんや、Mroonga開発者の斯波さんにいろいろ聞けますよ! -h3. 勉強会の概要 +### 勉強会の概要 今回の勉強会は3部構成になっています。 -勉強会の最初には、Groonga開発者チームからGroongaや "MySQLストレージエンジンMroonga":http://mroonga.org/ja/ 、Droonga(どぅるんが)やgrnxx(ぐるんたす)について開発者から簡単に紹介します。内容は前回からの改良点の紹介や、これから予定している改良についてです。第2部ではGroongaの商用利用についての発表があります。第3部では公募したユーザー事例等を発表してもらいます。 +勉強会の最初には、Groonga開発者チームからGroongaや +[MySQLストレージエンジンMroonga](http://mroonga.org/ja/) +、Droonga(どぅるんが)やgrnxx(ぐるんたす)について開発者から簡単に紹介します。内容は前回からの改良点の紹介や、これから予定している改良についてです。第2部ではGroongaの商用利用についての発表があります。第3部では公募したユーザー事例等を発表してもらいます。 -h3. 募集していること +### 募集していること Groonga勉強会の開催にあたり募集していることが1つあります! -h4. イベントレポーターを募集します! +#### イベントレポーターを募集します! -gihyo.jp へのイベントレポートを執筆してくれる人を1名募集しています。レポートを書くとgihyo.jpさんから執筆料がでます。レポートの文章は2ページくらいです。分量の目安については "他のイベントのレポート":http://gihyo.jp/news/report を参考にしてみてください。 +gihyo.jp +へのイベントレポートを執筆してくれる人を1名募集しています。レポートを書くとgihyo.jpさんから執筆料がでます。レポートの文章は2ページくらいです。分量の目安については +[他のイベントのレポート](http://gihyo.jp/news/report) +を参考にしてみてください。 参加希望者が定員を超えていますが、イベントレポーターは別枠なのでキャンセル待ちの人は応募してみませんか? Added: ja/_posts/2013-11-28-groonga-advent-calendar.md (+33 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-11-28-groonga-advent-calendar.md 2016-02-07 10:50:24 +0900 (3644f38) @@ -0,0 +1,33 @@ +--- +layout: post.ja +title: Groonga Advent Calendar 2013参加者募集のお知らせ +description: 今年の師走はGroonga Advent Calendar 2013で! +--- + +Groonga Advent Calendar 2013参加者募集のお知らせ +------------------------------------------------ + +明日はいよいよ「 [全文検索エンジンGroongaを囲む夕べ +4](http://atnd.org/events/43461) 」ですね! + +### Groonga Advent Calendar 2013に参加しませんか + +ここ数年、年末の風物詩となっている技術系 [Advent +Calendar](http://qiita.com/advent-calendar/2013) +をGroongaプロジェクトでもやってみることにしました。 + +GroongaやMroongaやRroongaなど、Groonga関連のノウハウをみんなで共有してみませんか? + +- Groongaを使っている○○を試してみた!とか、 +- Groongaを使って○○を作ってみた +- パッケージが提供されていない環境でGroongaをインストールして使ってみた +- ウェブ上にある記事は古いバージョンで解説されているけど、新しいバージョンではこんなだった! + +などなど。いろんな切り口があると思います。 + +Groongaを囲む夕べ4に参加した or +UstreamでGroongaチャンネルを視聴したあとの勢いで参加してみませんか。今回のイベントに残念ながら参加できない人はぜひAdvent +Calendarに参加してくれると嬉しいです! + +[参加登録](http://qiita.com/advent-calendar/2013/groonga/participants) +をお待ちしています! Deleted: ja/_posts/2013-11-28-groonga-advent-calendar.textile (+0 -26) 100644 =================================================================== --- ja/_posts/2013-11-28-groonga-advent-calendar.textile 2016-02-07 10:35:40 +0900 (aea6a98) +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: post.ja -title: Groonga Advent Calendar 2013参加者募集のお知らせ -description: 今年の師走はGroonga Advent Calendar 2013で! ---- - -h2. Groonga Advent Calendar 2013参加者募集のお知らせ - -明日はいよいよ「 "全文検索エンジンGroongaを囲む夕べ 4":http://atnd.org/events/43461 」ですね! - -h3. Groonga Advent Calendar 2013に参加しませんか - -ここ数年、年末の風物詩となっている技術系 "Advent Calendar":http://qiita.com/advent-calendar/2013 をGroongaプロジェクトでもやってみることにしました。 - -GroongaやMroongaやRroongaなど、Groonga関連のノウハウをみんなで共有してみませんか? - -* Groongaを使っている○○を試してみた!とか、 -* Groongaを使って○○を作ってみた -* パッケージが提供されていない環境でGroongaをインストールして使ってみた -* ウェブ上にある記事は古いバージョンで解説されているけど、新しいバージョンではこんなだった! - -などなど。いろんな切り口があると思います。 - -Groongaを囲む夕べ4に参加した or UstreamでGroongaチャンネルを視聴したあとの勢いで参加してみませんか。今回のイベントに残念ながら参加できない人はぜひAdvent Calendarに参加してくれると嬉しいです! - -"参加登録":http://qiita.com/advent-calendar/2013/groonga/participants をお待ちしています! Renamed: ja/_posts/2013-11-29-droonga-0.7.0.md (+4 -2) 83% =================================================================== --- ja/_posts/2013-11-29-droonga-0.7.0.textile 2016-02-07 10:35:40 +0900 (7edce7b) +++ ja/_posts/2013-11-29-droonga-0.7.0.md 2016-02-07 10:50:24 +0900 (b5dfb5e) @@ -3,9 +3,11 @@ layout: post.ja title: Droonga 0.7.0 をリリースしました --- -h2. Droonga 0.7.0 をリリースしました +Droonga 0.7.0 をリリースしました +-------------------------------- -本日、いい肉の日に "Droonga 0.7.0":http://droonga.org/2013/11/29/release.html をリリースしました! +本日、いい肉の日に [Droonga +0.7.0](http://droonga.org/2013/11/29/release.html) をリリースしました! これは Droonga の初めてのリリースです。 Droongaは、ストリーム指向の処理モデルを採用したスケーラブルなデータ処理エンジンです。 Renamed: ja/_posts/2013-11-29-release.md (+22 -25) 64% =================================================================== --- ja/_posts/2013-11-29-release.textile 2016-02-07 10:35:40 +0900 (16bc009) +++ ja/_posts/2013-11-29-release.md 2016-02-07 10:50:24 +0900 (1e80656) @@ -4,46 +4,43 @@ title: Groonga 3.1.0リリース description: Groonga 3.1.0をリリースしました! --- -今日は "全文検索エンジンGroongaを囲む夕べ4":http://atnd.org/events/43461 の開催日ですね。 +今日は +[全文検索エンジンGroongaを囲む夕べ4](http://atnd.org/events/43461) +の開催日ですね。 -h2. Groonga 3.1.0リリース +Groonga 3.1.0リリース +--------------------- -"Groonga 3.1.0":/ja/docs/news.html#release-3-1-0 をリリースしました! +[Groonga 3.1.0](/ja/docs/news.html#release-3-1-0) をリリースしました! -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) -h3. [実験的] 同じ値なら更新をスキップするオプションのサポート +### [実験的] 同じ値なら更新をスキップするオプションのサポート 今回のリリースでは、同じ値なら更新をスキップするオプションのサポートしました。 GRN_JA_SKIP_SAME_VALUE_PUT=yesを環境変数に設定すると有効になります。 パッケージでインストールした場合には設定ファイルのコメントアウトされている箇所をはずすと有効になります。 -<pre> -#GRN_JA_SKIP_SAME_VALUE_PUT=yes -</pre> + #GRN_JA_SKIP_SAME_VALUE_PUT=yes 設定ファイルはディストリビューションごとに次の場所にあります。 - DebianやUbuntu: -<pre> -/etc/default/groonga-httpd -/etc/default/groonga-server-http -/etc/default/groonga-server-gqtp -</pre> + /etc/default/groonga-httpd + /etc/default/groonga-server-http + /etc/default/groonga-server-gqtp CentOSやFedora: -<pre> -/etc/sysconfig/groonga-httpd -/etc/sysconfig/groonga-server-http -/etc/sysconfig/groonga-server-gqtp -/etc/systemd/groonga-httpd -/etc/systemd/groonga-server-http -/etc/systemd/groonga-server-gqtp -</pre> + /etc/sysconfig/groonga-httpd + /etc/sysconfig/groonga-server-http + /etc/sysconfig/groonga-server-gqtp + /etc/systemd/groonga-httpd + /etc/systemd/groonga-server-http + /etc/systemd/groonga-server-gqtp Groongaでは参照ロックフリーで高速に検索できるようにするのと、アトミックに更新するために都度値をコピーしてから参照先のポインタを差し替えるような振舞いで実現しています。 そのため可変長カラムの値を更新しつづけると、全く同じ値で更新した場合でも都度領域を消費していくので、データベースが徐々に肥大していきます。 @@ -53,9 +50,9 @@ Groongaでは参照ロックフリーで高速に検索できるようにする デフォルトではこの機能は無効です。これは、逆にデータベースのサイズの肥大化が加速したケースがあったからです。 そのため、実験的な扱いとなっています。もし、肥大化が顕著なケースに限って試されることをおすすめします。 +### さいごに -h3. さいごに - -3.0.9からの詳細な変更点は "3.1.0リリース 2013/11/29":/ja/docs/news.html#release-3-1-0 を確認してください。 +3.0.9からの詳細な変更点は [3.1.0リリース +2013/11/29](/ja/docs/news.html#release-3-1-0) を確認してください。 それでは、Groongaでガンガン検索してください! Renamed: ja/_posts/2013-12-04-after-groonga-night-4.md (+16 -6) 63% =================================================================== --- ja/_posts/2013-12-04-after-groonga-night-4.textile 2016-02-07 10:35:40 +0900 (e97e40a) +++ ja/_posts/2013-12-04-after-groonga-night-4.md 2016-02-07 10:50:24 +0900 (cbd62ac) @@ -1,11 +1,14 @@ --- layout: post.ja title: 「全文検索エンジンGroongaを囲む夕べ 4」開催しました -description: 11/29に「全文検索エンジンGroongaを囲む夕べ 4」を開催しました。 +description: 11/29に「全文検索エンジンGroongaを囲む夕べ +4」を開催しました。 --- h2. 「全文検索エンジンGroongaを囲む夕べ 4」を開催しました -昨年に引き続き、今年もいい肉の日に "「全文検索エンジンGroongaを囲む夕べ4」":http://atnd.org/events/43461 を開催することができました。 +昨年に引き続き、今年もいい肉の日に +[「全文検索エンジンGroongaを囲む夕べ4」](http://atnd.org/events/43461) +を開催することができました。 4回目の開催となる今年は「Groonga関連情報全部出し」をコンセプトに、どどーんと4時間の枠で開催しました。 そのため、今年はタイムテーブルが第1部「Groonga開発チームから」、第2部「Groongaと商用利用」、第3部「Groongaユーザーから」という3部に分けての構成となりました。 @@ -15,13 +18,20 @@ h2. 「全文検索エンジンGroongaを囲む夕べ 4」を開催しました 当日参加できなかった方向けに、当日の様子を見ることができるページを紹介します。 -* "Ustreamの録画":http://www.ustream.tv/channel/groonga-night 勉強会の様子を見ることができます。 +- [Ustreamの録画](http://www.ustream.tv/channel/groonga-night) + 勉強会の様子を見ることができます。 -* "Togetterまとめ":http://togetter.com/li/598598 当日のTwitterでの様子を追っかけることができます。 +<!-- --> -その他発表資料等の情報については、 "ATNDの告知ページ":http://atnd.org/events/43461#document を用意して随時更新していきます。発表資料は現在発表者の方々からご提供いただいているところです。 +- [Togetterまとめ](http://togetter.com/li/598598) + 当日のTwitterでの様子を追っかけることができます。 -今年は "DeNA":http://dena.com/ さんの協力のもとイベントを開催することができました。 +その他発表資料等の情報については、 +[ATNDの告知ページ](http://atnd.org/events/43461#document) +を用意して随時更新していきます。発表資料は現在発表者の方々からご提供いただいているところです。 + +今年は [DeNA](http://dena.com/) +さんの協力のもとイベントを開催することができました。 会場提供のみならず、イベントの受付や、懇親会での「いい肉の日」にちなんだ飲食物提供までと幅広くサポートしていただけました!DeNAさんありがとうございました! 発表者のみなさん、参加者のみなさん、ありがとうございました!また、来年のいい肉の日にお会いしましょう。 Added: ja/_posts/2013-12-16-drop-squeeze-and-lucid-support.md (+58 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-12-16-drop-squeeze-and-lucid-support.md 2016-02-07 10:50:24 +0900 (af9b726) @@ -0,0 +1,58 @@ +--- +layout: post.ja +title: Debian 6.0(squeeze)およびUbuntu +10.04(lucid)サポート終了予定について +description: Debian 6.0(squeeze)およびUbuntu +10.04(lucid)サポート終了予定について +--- + +Debian 6.0(squeeze)およびUbuntu 10.04(lucid)サポート終了予定について +-------------------------------------------------------------------- + +Groonga +Projectで今後サポートを終了する予定のリリースについてお知らせします。 + +### 対象について + +Groonga +3.1.1では、以下のリリースについてパッケージの提供を終了することにしました。 + +- Debian 6.0(squeeze) +- Ubuntu 10.04(lucid) + +### 終了時期について + +2013/12/29にリリース予定のGrooga +3.1.1からパッケージの提供をとりやめます。 + +### 対象ユーザについて + +Debian 6.0(squeeze)もしくはUbuntu +10.04(lucid)でお使いの場合には、それぞれ、Debian +7.0(wheezy)もしくはUbuntu +12.04(precise)以降へのアップグレードをおすすめします。 + +Debian +6.0(squeeze)自体はすでに古い安定版扱いなので、現在の安定版とされているDebian +7.0(wheezy)がリリースされて一年後となる来年5月にサポートが切れます。 + +### サポートを終了する背景について + +現在Groonga +Projectでは、毎月29日に新しいバージョンのパッケージをビルドし、独自に用意したリポジトリで提供しています。 +パッケージを提供するのは簡単に導入できるようにするためですが、これをさらに進めて独自のリポジトリを登録したりしないでも済むようにDebianのリポジトリに入れるための作業を進めています。 + +この作業にあたっては、Multiarchと呼ばれるマルチアーキテクチャへの対応が必要です。ただしこの機能は古いリリースである、Debian +6.0(squeeze)やUbuntu +10.04(lucid)では提供されていません。そのため、それぞれのサポートを終了することにしました。 + +バッケージの提供は終了しますが、環境の移行が難しい場合にはソースからビルドする手順を案内しているので、そちらを参照してください。 + +- [Debianでソースからビルド](http://groonga.org/ja/docs/install/debian.html#build-from-source) +- [Ubuntuでソースからビルド](http://groonga.org/ja/docs/install/ubuntu.html#build-from-source) + +### さいごに + +これからも、毎月29日のリリースで最新のGroongaをお届けしていきます。 + +それでは、Groongaでガンガン検索してください! Deleted: ja/_posts/2013-12-16-drop-squeeze-and-lucid-support.textile (+0 -44) 100644 =================================================================== --- ja/_posts/2013-12-16-drop-squeeze-and-lucid-support.textile 2016-02-07 10:35:40 +0900 (f22b1f1) +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: post.ja -title: Debian 6.0(squeeze)およびUbuntu 10.04(lucid)サポート終了予定について -description: Debian 6.0(squeeze)およびUbuntu 10.04(lucid)サポート終了予定について ---- - -h2. Debian 6.0(squeeze)およびUbuntu 10.04(lucid)サポート終了予定について - -Groonga Projectで今後サポートを終了する予定のリリースについてお知らせします。 - -h3. 対象について - -Groonga 3.1.1では、以下のリリースについてパッケージの提供を終了することにしました。 - -* Debian 6.0(squeeze) -* Ubuntu 10.04(lucid) - -h3. 終了時期について - -2013/12/29にリリース予定のGrooga 3.1.1からパッケージの提供をとりやめます。 - -h3. 対象ユーザについて - -Debian 6.0(squeeze)もしくはUbuntu 10.04(lucid)でお使いの場合には、それぞれ、Debian 7.0(wheezy)もしくはUbuntu 12.04(precise)以降へのアップグレードをおすすめします。 - -Debian 6.0(squeeze)自体はすでに古い安定版扱いなので、現在の安定版とされているDebian 7.0(wheezy)がリリースされて一年後となる来年5月にサポートが切れます。 - -h3. サポートを終了する背景について - -現在Groonga Projectでは、毎月29日に新しいバージョンのパッケージをビルドし、独自に用意したリポジトリで提供しています。 -パッケージを提供するのは簡単に導入できるようにするためですが、これをさらに進めて独自のリポジトリを登録したりしないでも済むようにDebianのリポジトリに入れるための作業を進めています。 - -この作業にあたっては、Multiarchと呼ばれるマルチアーキテクチャへの対応が必要です。ただしこの機能は古いリリースである、Debian 6.0(squeeze)やUbuntu 10.04(lucid)では提供されていません。そのため、それぞれのサポートを終了することにしました。 - -バッケージの提供は終了しますが、環境の移行が難しい場合にはソースからビルドする手順を案内しているので、そちらを参照してください。 - -* "Debianでソースからビルド":http://groonga.org/ja/docs/install/debian.html#build-from-source -* "Ubuntuでソースからビルド":http://groonga.org/ja/docs/install/ubuntu.html#build-from-source - -h3. さいごに - -これからも、毎月29日のリリースで最新のGroongaをお届けしていきます。 - -それでは、Groongaでガンガン検索してください! Added: ja/_posts/2013-12-20-groonga-night-4-on-youtube.md (+27 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-12-20-groonga-night-4-on-youtube.md 2016-02-07 10:50:24 +0900 (2faab9d) @@ -0,0 +1,27 @@ +--- +layout: post.ja +title: 「全文検索エンジンGroongaを囲む夕べ +4」の様子がYouTubeでも視聴できます +description: 「全文検索エンジンGroongaを囲む夕べ +4」の様子がYouTubeでも視聴できます +--- +h2. 「全文検索エンジンGroongaを囲む夕べ +4」の様子がYouTubeでも視聴できます + +今年も「いい肉の日」である11/29に開催した、Groonga勉強会「 +[全文検索エンジンGroongaを囲む夕べ 4](http://atnd.org/events/43461) +」の録画がYouTubeでも視聴できるようになりました。 + +当日Ustreamでの配信を担当してくれた +[@suzuki](https://twitter.com/suzuki) +さんのおかげです。ありがとうございます! + +都合が悪くて参加できなかった人は、録画で当日の様子を追体験してみてください。この動画についてはUstreamの +[groonga-night](http://www.ustream.tv/channel/groonga-night) +チャンネルからも視聴できます。 + +勉強会についてはイベント終了後まとめがあります。 +[発表資料](http://atnd.org/events/43461#document) +だけでなく、当日のツイートの様子なども +[Togetterまとめ](http://togetter.com/li/598598) +があるので参考にしてみてください。 Deleted: ja/_posts/2013-12-20-groonga-night-4-on-youtube.textile (+0 -14) 100644 =================================================================== --- ja/_posts/2013-12-20-groonga-night-4-on-youtube.textile 2016-02-07 10:35:40 +0900 (4e5c8a5) +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: post.ja -title: 「全文検索エンジンGroongaを囲む夕べ 4」の様子がYouTubeでも視聴できます -description: 「全文検索エンジンGroongaを囲む夕べ 4」の様子がYouTubeでも視聴できます ---- -h2. 「全文検索エンジンGroongaを囲む夕べ 4」の様子がYouTubeでも視聴できます - -今年も「いい肉の日」である11/29に開催した、Groonga勉強会「 "全文検索エンジンGroongaを囲む夕べ 4":http://atnd.org/events/43461 」の録画がYouTubeでも視聴できるようになりました。 - -当日Ustreamでの配信を担当してくれた "@suzuki":https://twitter.com/suzuki さんのおかげです。ありがとうございます! - -都合が悪くて参加できなかった人は、録画で当日の様子を追体験してみてください。この動画についてはUstreamの "groonga-night":http://www.ustream.tv/channel/groonga-night チャンネルからも視聴できます。 - -勉強会についてはイベント終了後まとめがあります。 "発表資料":http://atnd.org/events/43461#document だけでなく、当日のツイートの様子なども "Togetterまとめ":http://togetter.com/li/598598 があるので参考にしてみてください。 Added: ja/_posts/2013-12-29-release.md (+97 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2013-12-29-release.md 2016-02-07 10:50:24 +0900 (e909600) @@ -0,0 +1,97 @@ +--- +layout: post.ja +title: Groonga 3.1.1リリース +description: Groonga 3.1.1をリリースしました! +--- + +今日は2013年のしめくくりのいい肉の日ですね。 + +Groonga 3.1.1リリース +--------------------- + +[Groonga 3.1.1](/ja/docs/news.html#release-3-1-1) をリリースしました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +### 位置情報検索で座標が矩形範囲にあるかを調べるためのgeo_in_rectangleの世界対応 + +今回のリリースでは、位置情報検索をするときに使うgeo_in_rectangleを全世界対応にしました。 + +これまでも、geo_in_rectangleを使うことができましたが、サポートしているのが、北半球の東経の範囲に限定されていました。そのため、赤道や子午線をまたいだような場合では使えませんでした。これは日本に限定しているような場合では実用上問題になりませんが、Groongaの世界進出には妨げとなってしまうので、今回対応しています。 + +関数の詳細については +[geo_in_rectangle](http://groonga.org/ja/docs/reference/functions/geo_in_rectangle.html) +のドキュメントを参照してください。 + +### 特定の範囲内のカラムの値でフィルタするためのbetween関数のサポート + +今回のリリースでは、特定の範囲にあるカラムの値を抽出するのに便利なbetween関数をサポートしました。 + +たとえば、次のようなサンプルデータで + + table_create Users TABLE_HASH_KEY ShortText + column_create Users age COLUMN_SCALAR Int32 + table_create Ages TABLE_HASH_KEY Int32 + column_create Ages user_age COLUMN_INDEX Users age + load --table Users + [ + {"_key": "ありす", "age": 14}, + {"_key": "いつき", "age": 15}, + {"_key": "うみ", "age": 16}, + {"_key": "えいじ", "age": 17}, + {"_key": "おういちろう", "age": 18} + ] + +映倫のR15+に該当するユーザーを検索するには、これまでは次のようなクエリで実現していました。 + + select Users --filter 'age >= 15 && age <= 17' + +これがbetweenを使うと次のようにして検索することができます。 + + select Users --filter 'between(age, 15, "include", 17, "include")' + [ + [ + [3], + [["_id","UInt32"], ["_key","ShortText"],["age","Int32"]], + [2,"いつき",15], + [3,"うみ",16], + [4,"えいじ",17] + ] + ] + +between関数では、範囲の境界値を含むかどうかを指定できます。上記例では"include"を指定することで、15歳以上17歳以下というのを実現しています。 + +関数の詳細については +[between](http://groonga.org/ja/docs/reference/functions/between.html) +のドキュメントを参照してください。 + +### Fedora 20のサポート + +今回のリリースでは、2013年12月17日にリリースされたばかりのFedora +20をサポートしました。それにともないFedora +19のサポートを終了しています。 + +インストール手順については [Fedora +20](http://groonga.org/ja/docs/install/fedora.html) +のドキュメントを参照してください。 + +### Debian 6.0(squeeze) Ubuntu 10.04(lucid)のサポート終了 + +今回のリリースでは、予告どおりにDebian 6.0(squeeze)とUbuntu +10.04(lucid)のサポートを終了しました。 + +これらの環境で使っている人はDebian 7.0(wheezy)もしくはUbuntu +12.04(precise)へ移行するか、あるいはソースからビルドして使うようにしてください。 + +サポート終了することになった経緯については、 [Debian +6.0(squeeze)およびUbuntu 10.04(lucid)サポート終了予定について]({%) +post_url 2013-12-16-drop-squeeze-and-lucid-support %} +を参照してください。 + +### さいごに + +3.1.0からの詳細な変更点は [3.1.1リリース +2013/12/29](/ja/docs/news.html#release-3-1-1) を確認してください。 + +それでは、Groongaでガンガン検索してください! Deleted: ja/_posts/2013-12-29-release.textile (+0 -88) 100644 =================================================================== --- ja/_posts/2013-12-29-release.textile 2016-02-07 10:35:40 +0900 (e9bbab7) +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: post.ja -title: Groonga 3.1.1リリース -description: Groonga 3.1.1をリリースしました! ---- - -今日は2013年のしめくくりのいい肉の日ですね。 - -h2. Groonga 3.1.1リリース - -"Groonga 3.1.1":/ja/docs/news.html#release-3-1-1 をリリースしました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -h3. 位置情報検索で座標が矩形範囲にあるかを調べるためのgeo_in_rectangleの世界対応 - -今回のリリースでは、位置情報検索をするときに使うgeo_in_rectangleを全世界対応にしました。 - -これまでも、geo_in_rectangleを使うことができましたが、サポートしているのが、北半球の東経の範囲に限定されていました。そのため、赤道や子午線をまたいだような場合では使えませんでした。これは日本に限定しているような場合では実用上問題になりませんが、Groongaの世界進出には妨げとなってしまうので、今回対応しています。 - - -関数の詳細については "geo_in_rectangle":http://groonga.org/ja/docs/reference/functions/geo_in_rectangle.html のドキュメントを参照してください。 - -h3. 特定の範囲内のカラムの値でフィルタするためのbetween関数のサポート - -今回のリリースでは、特定の範囲にあるカラムの値を抽出するのに便利なbetween関数をサポートしました。 - -たとえば、次のようなサンプルデータで - -<pre> -table_create Users TABLE_HASH_KEY ShortText -column_create Users age COLUMN_SCALAR Int32 -table_create Ages TABLE_HASH_KEY Int32 -column_create Ages user_age COLUMN_INDEX Users age -load --table Users -[ -{"_key": "ありす", "age": 14}, -{"_key": "いつき", "age": 15}, -{"_key": "うみ", "age": 16}, -{"_key": "えいじ", "age": 17}, -{"_key": "おういちろう", "age": 18} -] -</pre> - -映倫のR15+に該当するユーザーを検索するには、これまでは次のようなクエリで実現していました。 - -<pre> -select Users --filter 'age >= 15 && age <= 17' -</pre> - -これがbetweenを使うと次のようにして検索することができます。 - -<pre> -select Users --filter 'between(age, 15, "include", 17, "include")' -[ - [ - [3], - [["_id","UInt32"], ["_key","ShortText"],["age","Int32"]], - [2,"いつき",15], - [3,"うみ",16], - [4,"えいじ",17] - ] -] -</pre> - -between関数では、範囲の境界値を含むかどうかを指定できます。上記例では"include"を指定することで、15歳以上17歳以下というのを実現しています。 - -関数の詳細については "between":http://groonga.org/ja/docs/reference/functions/between.html のドキュメントを参照してください。 - -h3. Fedora 20のサポート - -今回のリリースでは、2013年12月17日にリリースされたばかりのFedora 20をサポートしました。それにともないFedora 19のサポートを終了しています。 - -インストール手順については "Fedora 20":http://groonga.org/ja/docs/install/fedora.html のドキュメントを参照してください。 - -h3. Debian 6.0(squeeze) Ubuntu 10.04(lucid)のサポート終了 - -今回のリリースでは、予告どおりにDebian 6.0(squeeze)とUbuntu 10.04(lucid)のサポートを終了しました。 - -これらの環境で使っている人はDebian 7.0(wheezy)もしくはUbuntu 12.04(precise)へ移行するか、あるいはソースからビルドして使うようにしてください。 - -サポート終了することになった経緯については、 "Debian 6.0(squeeze)およびUbuntu 10.04(lucid)サポート終了予定について":{% post_url 2013-12-16-drop-squeeze-and-lucid-support %} を参照してください。 - -h3. さいごに - -3.1.0からの詳細な変更点は "3.1.1リリース 2013/12/29":/ja/docs/news.html#release-3-1-1 を確認してください。 - -それでは、Groongaでガンガン検索してください! Renamed: ja/_posts/2014-01-29-droonga-0.9.0.md (+4 -2) 85% =================================================================== --- ja/_posts/2014-01-29-droonga-0.9.0.textile 2016-02-07 10:35:40 +0900 (8cc5c75) +++ ja/_posts/2014-01-29-droonga-0.9.0.md 2016-02-07 10:50:24 +0900 (1f8b190) @@ -3,9 +3,11 @@ layout: post.ja title: Droonga 0.9.0 をリリースしました --- -h2. Droonga 0.9.0 をリリースしました +Droonga 0.9.0 をリリースしました +-------------------------------- -"Droonga 0.9.0":http://droonga.org/news/2014/01/29/release.html をリリースしました! +[Droonga 0.9.0](http://droonga.org/news/2014/01/29/release.html) +をリリースしました! Droongaは、ストリーム指向の処理モデルを採用したスケーラブルなデータ処理エンジンです。 検索、更新、集約などの多くの操作がパイプラインを通じて行われるこのモデルにより、Droongaは高い柔軟性と拡張性を備えています。 Renamed: ja/_posts/2014-01-29-groonga-meetup.md (+19 -16) 67% =================================================================== --- ja/_posts/2014-01-29-groonga-meetup.textile 2016-02-07 10:35:40 +0900 (eac79aa) +++ ja/_posts/2014-01-29-groonga-meetup.md 2016-02-07 10:50:24 +0900 (b22192f) @@ -4,11 +4,13 @@ title: Groonga Meetupを開催しました! description: Groonga Meetupを開催しました! --- -h2. Groonga Meetupを開催しました! +Groonga Meetupを開催しました! +------------------------------ -肉の日ということで、 "Groonga Meetup 2014/01/29":http://atnd.org/events/47093 を開催しました! +肉の日ということで、 [Groonga Meetup +2014/01/29](http://atnd.org/events/47093) を開催しました! -h3. 当日の様子 +### 当日の様子 今回のMeetupでは平日夜の開催ということもあり、みんなでご飯を食べるところからはじまりました。肉の日ですしね! 会場を提供してくれたWEICさんの近くにある有名なとんかつ屋さん「成蔵」に行きました。さすがに行列ができていました! @@ -16,28 +18,29 @@ h3. 当日の様子 ご飯を食べたあとは、会場となるWEICさんの会議室に移動しての続きです。 最初はリリースを担当の林さんからの次のような内容のプレゼンがありました。 -* 今月のGroonga -* 今月のMroonga -* Groonga Gobjectの話 -* ドキュメントのこぼれ話 -* もくもく作業の内容 +- 今月のGroonga +- 今月のMroonga +- Groonga Gobjectの話 +- ドキュメントのこぼれ話 +- もくもく作業の内容 プレゼンの後は参加者の興味に応じて別れてのもくもく作業となりました。 -h3. Groonga Meetupの成果 +### Groonga Meetupの成果 今回のMeetupでは、こんな成果がありました。 -* Groongaのドキュメントの不備を参加者に指摘してもらえた -* Groongaの表記の統一化作業が進んだ -* Rroongaの3.1.2のリリース作業が進んだ -* Groonga本を書いてくれる人が見つかった -* 中国語のトークナイザーのテストの改善に協力してもらえることになった +- Groongaのドキュメントの不備を参加者に指摘してもらえた +- Groongaの表記の統一化作業が進んだ +- Rroongaの3.1.2のリリース作業が進んだ +- Groonga本を書いてくれる人が見つかった +- 中国語のトークナイザーのテストの改善に協力してもらえることになった -h3. さいごに +### さいごに 今回のMeetupでは、「ドキュメント」をよくしようということで、興味ある内容ごとに分かれて参加者と一緒にもくもく作業するというのをやってみました。Meetupは夕飯込みの2時間だったのであっという間に過ぎてしまい、もっと作業時間に割りあてる時間を増やせるようにしたほうが良かったかも、という気もします。 -年一回開催しているGroongaを囲む夕べとは違い、こじんまりとしたゆるやかな会でした。次回開催は未定です。今回はドキュメントだったからスルーしたけど、こんな内容だったら参加してみたいというのがあれば、次のMeetupを主催してみませんか? 会場を探したりといった困った点についてはお手伝いができますよ! +年一回開催しているGroongaを囲む夕べとは違い、こじんまりとしたゆるやかな会でした。次回開催は未定です。今回はドキュメントだったからスルーしたけど、こんな内容だったら参加してみたいというのがあれば、次のMeetupを主催してみませんか? +会場を探したりといった困った点についてはお手伝いができますよ! 今回のMeetupが無事開催にこぎつけたのも、会場提供してくださったWEICさんのおかげです。ありがとうございました! Renamed: ja/_posts/2014-01-29-release.md (+23 -22) 52% =================================================================== --- ja/_posts/2014-01-29-release.textile 2016-02-07 10:35:40 +0900 (ac71f7f) +++ ja/_posts/2014-01-29-release.md 2016-02-07 10:50:24 +0900 (ca4745d) @@ -6,13 +6,15 @@ description: Groonga 3.1.2をリリースしました! 今日は2014年最初の肉の日ですね。 -h2. Groonga 3.1.2リリース +Groonga 3.1.2リリース +--------------------- -"Groonga 3.1.2":/ja/docs/news.html#release-3-1-2 をリリースしました! +[Groonga 3.1.2](/ja/docs/news.html#release-3-1-2) をリリースしました! -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) -h3. ロックタイムアウトをカスタマイズできるようになりました +### ロックタイムアウトをカスタマイズできるようになりました 今回のリリースでは、ロックタイムアウトをビルド時にカスタマイズできるようになりました。この定数はデフォルトでは、長めの値10000秒(約3時間)になっています。(通常はこの値を変更する必要はありません。) @@ -20,44 +22,43 @@ h3. ロックタイムアウトをカスタマイズできるようになりま configureを使う場合: -<pre> -$ ./configure --with-lock-timeout=(任意の値) -</pre> + $ ./configure --with-lock-timeout=(任意の値) CMakeを使う場合: -<pre> -cmake -DGRN_LOCK_TIMEOUT=(任意の値) -</pre> + cmake -DGRN_LOCK_TIMEOUT=(任意の値) -Groongaではユーザーが動的に変更する仕組みを提供していませんが、Mroongaの場合には動的にロックタイムアウトが変更できる(SET GLOBAL mroonga_lock_timeout)のでソースからビルドする必要はありません。 +Groongaではユーザーが動的に変更する仕組みを提供していませんが、Mroongaの場合には動的にロックタイムアウトが変更できる(SET +GLOBAL mroonga_lock_timeout)のでソースからビルドする必要はありません。 -h3. GRN_JA_SKIP_SAME_VALUE_PUTが標準で有効になりました +### GRN_JA_SKIP_SAME_VALUE_PUTが標準で有効になりました -昨年11/29日にリリースしたGroonga 3.1.0では、同じ値なら更新をスキップするオプションをサポートしました。このときのリリースでは、あくまでオプションをサポートしたのみで、標準では無効となっていました。そのため使いたい人は設定ファイルを編集して有効にしてくださいという扱いでした。 +昨年11/29日にリリースしたGroonga +3.1.0では、同じ値なら更新をスキップするオプションをサポートしました。このときのリリースでは、あくまでオプションをサポートしたのみで、標準では無効となっていました。そのため使いたい人は設定ファイルを編集して有効にしてくださいという扱いでした。 今回のリリースからは、設定ファイルを変更することなく標準でこのオプションを有効にするようにしました。同じ値なのに頻繁に更新が発生していたケースではデータベースの肥大化を抑制することができるようになります。 -実際に GRN_JA_SKIP_SAME_VALUE_PUTを有効にした簡単な例については以下を参照にしてみてください。 +実際に +GRN_JA_SKIP_SAME_VALUE_PUTを有効にした簡単な例については以下を参照にしてみてください。 -* "全文検索エンジンGroongaでデータベースの肥大化を防ぐには":http://qiita.com/groonga/items/d18c5df5410207b4f0e6 +- [全文検索エンジンGroongaでデータベースの肥大化を防ぐには](http://qiita.com/groonga/items/d18c5df5410207b4f0e6) -h3. &&や||の挙動がECMAScriptにより準拠するようになりました +### &&や||の挙動がECMAScriptにより準拠するようになりました -これまでX && Y や X || Yを評価した結果については、1もしくは0が返すようになっていましたが、ECMAScriptにならって、そのものの値を返すようになりました。 +これまでX && Y や X || +Yを評価した結果については、1もしくは0が返すようになっていましたが、ECMAScriptにならって、そのものの値を返すようになりました。 この変更がはいるとどう嬉しいかというと、たとえば、snippet_htmlを使っているケースが該当します。 snippet_htmlでは該当するスニペットがない場合のデフォルト値を指定することができませんでした。今回の変更で、そのものの値を返すようになったので、次のようにするとスニペットのデフォルト値を指定することができるようになります。 -<pre> -snippet_html(XXX) || 'デフォルトの値' -</pre> + snippet_html(XXX) || 'デフォルトの値' 例えば、titleカラムとcontentカラムがあり、条件にマッチするもののtitleを抜きだすとき、必ずしもtitleに指定したキーワードが含まれないことがあります。そんなときでも、デフォルトの値にtitleを指定しておくと空っぽの結果にならずにすみます。 -h3. さいごに +### さいごに -3.1.1からの詳細な変更点は "3.1.2リリース 2014/01/29":/ja/docs/news.html#release-3-1-2 を確認してください。 +3.1.1からの詳細な変更点は [3.1.2リリース +2014/01/29](/ja/docs/news.html#release-3-1-2) を確認してください。 それでは、Groongaでガンガン検索してください! Renamed: ja/_posts/2014-02-09-droonga-0.9.9.md (+6 -3) 74% =================================================================== --- ja/_posts/2014-02-09-droonga-0.9.9.textile 2016-02-07 10:35:40 +0900 (160a569) +++ ja/_posts/2014-02-09-droonga-0.9.9.md 2016-02-07 10:50:24 +0900 (369fabb) @@ -3,12 +3,15 @@ layout: post.ja title: Droonga 0.9.9 をリリースしました --- -h2. Droonga 0.9.9 をリリースしました +Droonga 0.9.9 をリリースしました +-------------------------------- -"Droonga 0.9.9":http://droonga.org/news/2014/02/09/release.html をリリースしました! +[Droonga 0.9.9](http://droonga.org/news/2014/02/09/release.html) +をリリースしました! Droongaは、ストリーム指向の処理モデルを採用したスケーラブルなデータ処理エンジンです。 -「Distributed Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 +「Distributed +Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 検索、更新、集約などの多くの操作がパイプラインを通じて行われるこのモデルにより、Droongaは高い柔軟性と拡張性を備えています。 また、既存操作の組み合わせによる複雑な操作にも対応しています。 ユーザーはRubyでプラグインを開発して、独自の操作をDroongaに加える事ができます。 Added: ja/_posts/2014-02-09-release.md (+76 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2014-02-09-release.md 2016-02-07 10:50:24 +0900 (bb23a08) @@ -0,0 +1,76 @@ +--- +layout: post.ja +title: Groonga 4.0.0リリース +description: Groonga 4.0.0をリリースしました! +--- + +今日は年に1度の記念すべき肉の日(2/9)ですね。 + +Groonga 4.0.0リリース +--------------------- + +昨年2月9日以来のメジャーアップデートである [Groonga +4.0.0](/ja/docs/news.html#release-4-0-0) をリリースしました! + +今回のリリースでメジャーバージョンがあがって4.0.0となっています! +メジャーバージョンはあがりましたが、データベースのファイル形式は互換性があるのでデータベースを作りなおす必要はありません。 + +先月のリリースから間もないので、直接ユーザさんに影響するような大きな変更は入っていませんが、毎月こつこつリリースしてきたぶんがたまっているので、Mroongaと足並みを揃えてどーんと4.0.0をリリースすることにしました! + +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) + +前回のメジャーアップデート以降、毎月定期的にリリースを重ねてきました。毎月のリリースを継続することで、毎月29日はGroonga,Mroongaのリリースがあるよ、というのを知ってもらえるようになってきました。 + +今回のメジャーバージョンアップにあたって3.0.0のリリース以降、どんな変更が入ったのか振り返ってみたいと思います。 + +- 組み込み型への論理演算子のサポートを強化しました。(3.0.2) +- [sub_filter](/docs/reference/functions/sub_filter.html) + 関数を追加しました。 (3.0.2) +- query() 関数でクエリ展開をサポートしました。 (3.0.2) +- Ubuntu 13.04 Raring Ringtailをサポートしました。 (3.0.3) +- 学習時の重みづけをconfiguration.weightでカスタマイズできるようにしました。 (3.0.3) +- ベクターを "vector[N]" + というようにインデックスを指定してアクセスできるようにしました。 (3.0.3) +- Ubuntu 11.10 (Oneiric Ocelot) のサポートをやめました。 (3.0.4) +- [tokenize](/docs/reference/commands/tokenize.html) + コマンドを追加しました。 (3.0.4) +- Debian 8.0 (jessie)をサポートしました。 (3.0.4) +- [html_untag](/docs/reference/functions/html_untag.html) + 関数を追加しました。 (3.0.5) +- Fedora 19をサポートしました。 (3.0.6) +- Fedora 18のサポートをやめました。 (3.0.6) +- APIドキュメントを追加しました。 (3.0.7) +- ログ関連のディレクティブをgroonga-httpdでサポートしました。 (3.0.7) +- groonga-httpdでPOSTメソッドでデータをロードできるようにしました。 (3.0.7) +- 参照されているレコードに対して + [カスケード削除](/docs/reference/commands/delete.html#cascade-delete) + できるようにしました。 (3.0.8) +- 実験的に [ruby_eval](/docs/reference/commands/ruby_eval.html) + コマンドを追加しました。 (3.0.8) +- Ubuntu 13.10 (Saucy Salamander) をサポートしました。 (3.0.9) +- 実験的に [ruby_load](/docs/reference/commands/ruby_load.html) + コマンドを追加しました。 (3.0.9) +- 同じ値のときの更新をスキップするためのオプションをサポートしました。 (3.1.0) +- Debian 6.0 (squeeze)のサポートをやめました。 (3.1.1) +- Ubuntu 10.04 (lucid)のサポートをやめました。 (3.1.1) +- [geo_in_rectangle](/docs/reference/functions/geo_in_rectangle.html) + が世界対応しました。 (3.1.1) +- 特定の範囲の値でフィルタするのに使う + [between](/docs/reference/functions/between.html) 関数を追加しました。(3.1.1) +- Fedora 19のサポートをやめました。 (3.1.1) +- Fedora 20をサポートしました。 (3.1.1) +- GRN_JA_SKIP_SAME_VALUE_PUTをデフォルトで有効にしました。 (3.1.2) +- ロックタイムアウトをカスタマイズできるようにしました。 (3.1.2) +- Ubuntu 13.04 のサポートをやめました。 (4.0.0) +- ノーマライズ前の元の文字列で次の位置を計算するのに使う"check"を表示できるようにしました。 (4.0.0) + +各リリースではユーザさんからの報告をもとにバグ修正や改善を行うことができました。ありがとうございます。 +Groongaをもっと良くしていくために、これからも宜くおねがいします! + +### さいごに + +3.1.2からの詳細な変更点は [4.0.0リリース +2014/02/29](/ja/docs/news.html#release-4-0-0) を確認してください。 + +それでは、Groongaでガンガン検索してください! Deleted: ja/_posts/2014-02-09-release.textile (+0 -63) 100644 =================================================================== --- ja/_posts/2014-02-09-release.textile 2016-02-07 10:35:40 +0900 (aabf717) +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: post.ja -title: Groonga 4.0.0リリース -description: Groonga 4.0.0をリリースしました! ---- - -今日は年に1度の記念すべき肉の日(2/9)ですね。 - -h2. Groonga 4.0.0リリース - -昨年2月9日以来のメジャーアップデートである "Groonga 4.0.0":/ja/docs/news.html#release-4-0-0 をリリースしました! - -今回のリリースでメジャーバージョンがあがって4.0.0となっています! -メジャーバージョンはあがりましたが、データベースのファイル形式は互換性があるのでデータベースを作りなおす必要はありません。 - -先月のリリースから間もないので、直接ユーザさんに影響するような大きな変更は入っていませんが、毎月こつこつリリースしてきたぶんがたまっているので、Mroongaと足並みを揃えてどーんと4.0.0をリリースすることにしました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html - -前回のメジャーアップデート以降、毎月定期的にリリースを重ねてきました。毎月のリリースを継続することで、毎月29日はGroonga,Mroongaのリリースがあるよ、というのを知ってもらえるようになってきました。 - -今回のメジャーバージョンアップにあたって3.0.0のリリース以降、どんな変更が入ったのか振り返ってみたいと思います。 - -* 組み込み型への論理演算子のサポートを強化しました。(3.0.2) -* "sub_filter":/docs/reference/functions/sub_filter.html 関数を追加しました。 (3.0.2) -* query() 関数でクエリ展開をサポートしました。 (3.0.2) -* Ubuntu 13.04 Raring Ringtailをサポートしました。 (3.0.3) -* 学習時の重みづけをconfiguration.weightでカスタマイズできるようにしました。 (3.0.3) -* ベクターを "vector[N]" というようにインデックスを指定してアクセスできるようにしました。 (3.0.3) -* Ubuntu 11.10 (Oneiric Ocelot) のサポートをやめました。 (3.0.4) -* "tokenize":/docs/reference/commands/tokenize.html コマンドを追加しました。 (3.0.4) -* Debian 8.0 (jessie)をサポートしました。 (3.0.4) -* "html_untag":/docs/reference/functions/html_untag.html 関数を追加しました。 (3.0.5) -* Fedora 19をサポートしました。 (3.0.6) -* Fedora 18のサポートをやめました。 (3.0.6) -* APIドキュメントを追加しました。 (3.0.7) -* ログ関連のディレクティブをgroonga-httpdでサポートしました。 (3.0.7) -* groonga-httpdでPOSTメソッドでデータをロードできるようにしました。 (3.0.7) -* 参照されているレコードに対して "カスケード削除":/docs/reference/commands/delete.html#cascade-delete できるようにしました。 (3.0.8) -* 実験的に "ruby_eval":/docs/reference/commands/ruby_eval.html コマンドを追加しました。 (3.0.8) -* Ubuntu 13.10 (Saucy Salamander) をサポートしました。 (3.0.9) -* 実験的に "ruby_load":/docs/reference/commands/ruby_load.html コマンドを追加しました。 (3.0.9) -* 同じ値のときの更新をスキップするためのオプションをサポートしました。 (3.1.0) -* Debian 6.0 (squeeze)のサポートをやめました。 (3.1.1) -* Ubuntu 10.04 (lucid)のサポートをやめました。 (3.1.1) -* "geo_in_rectangle":/docs/reference/functions/geo_in_rectangle.html が世界対応しました。 (3.1.1) -* 特定の範囲の値でフィルタするのに使う "between":/docs/reference/functions/between.html 関数を追加しました。(3.1.1) -* Fedora 19のサポートをやめました。 (3.1.1) -* Fedora 20をサポートしました。 (3.1.1) -* GRN_JA_SKIP_SAME_VALUE_PUTをデフォルトで有効にしました。 (3.1.2) -* ロックタイムアウトをカスタマイズできるようにしました。 (3.1.2) -* Ubuntu 13.04 のサポートをやめました。 (4.0.0) -* ノーマライズ前の元の文字列で次の位置を計算するのに使う"check"を表示できるようにしました。 (4.0.0) - - -各リリースではユーザさんからの報告をもとにバグ修正や改善を行うことができました。ありがとうございます。 -Groongaをもっと良くしていくために、これからも宜くおねがいします! - -h3. さいごに - -3.1.2からの詳細な変更点は "4.0.0リリース 2014/02/29":/ja/docs/news.html#release-4-0-0 を確認してください。 - -それでは、Groongaでガンガン検索してください! Added: ja/_posts/2014-02-28-droonga-1.0.0.md (+15 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2014-02-28-droonga-1.0.0.md 2016-02-07 10:50:24 +0900 (a05b5de) @@ -0,0 +1,15 @@ +--- +layout: post.ja +title: Droonga 1.0.0 をリリースしました +--- + +Droonga 1.0.0 をリリースしました +-------------------------------- + +[Droonga 1.0.0](http://droonga.org/news/2014/02/28/release.html) +をリリースしました!これはDroongaプロジェクトにとって初の正式なリリースです。 + +Droongaは、ストリーム指向の処理モデルを採用したスケーラブルなデータ処理エンジンです。「Distributed +Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。検索、更新、集約などの多くの操作がパイプラインを通じて行われるこのモデルにより、Droongaは高い柔軟性と拡張性を備えています。また、既存操作の組み合わせによる複雑な操作にも対応しています。ユーザーはRubyでプラグインを開発して、独自の操作をDroongaに加える事ができます。 + +Droongaは現在活発に開発が行われております。興味を持たれた方は、試しに使ってみたり、ぜひ開発に参加してください! Deleted: ja/_posts/2014-02-28-droonga-1.0.0.textile (+0 -12) 100644 =================================================================== --- ja/_posts/2014-02-28-droonga-1.0.0.textile 2016-02-07 10:35:40 +0900 (2033eda) +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post.ja -title: Droonga 1.0.0 をリリースしました ---- - -h2. Droonga 1.0.0 をリリースしました - -"Droonga 1.0.0":http://droonga.org/news/2014/02/28/release.html をリリースしました!これはDroongaプロジェクトにとって初の正式なリリースです。 - -Droongaは、ストリーム指向の処理モデルを採用したスケーラブルなデータ処理エンジンです。「Distributed Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。検索、更新、集約などの多くの操作がパイプラインを通じて行われるこのモデルにより、Droongaは高い柔軟性と拡張性を備えています。また、既存操作の組み合わせによる複雑な操作にも対応しています。ユーザーはRubyでプラグインを開発して、独自の操作をDroongaに加える事ができます。 - -Droongaは現在活発に開発が行われております。興味を持たれた方は、試しに使ってみたり、ぜひ開発に参加してください! Renamed: ja/_posts/2014-03-11-howto-print-stickers.md (+79 -63) 51% =================================================================== --- ja/_posts/2014-03-11-howto-print-stickers.textile 2016-02-07 10:35:40 +0900 (6207332) +++ ja/_posts/2014-03-11-howto-print-stickers.md 2016-02-07 10:50:24 +0900 (dfd8621) @@ -3,101 +3,114 @@ layout: post.ja title: Groongaステッカーの印刷を注文する方法 --- -h2. Groongaステッカーの印刷を注文する方法 +Groongaステッカーの印刷を注文する方法 +------------------------------------- -h3. はじめに +### はじめに Groongaプロジェクトでは、イベントなどでGroonga族のステッカーを配布しています。 -ステッカーのデータは "groonga.orgで公開":http://groonga.org/ja/sticker/ しているので、だれでも自由にステッカーを作成することが可能です。 +ステッカーのデータは [groonga.orgで公開](http://groonga.org/ja/sticker/) +しているので、だれでも自由にステッカーを作成することが可能です。 -今回は "デジタ":http://www.digitaprint.jp/ を利用したステッカー印刷の注文手順を紹介します。 +今回は [デジタ](http://www.digitaprint.jp/) +を利用したステッカー印刷の注文手順を紹介します。 Groongaステッカー印刷時の参考にしてください。 -h3. 発注先と素材の選定 +### 発注先と素材の選定 デジタでは紙やフィルムなど多くのステッカー用素材を取り扱っているので、まずは無料サンプルを請求しました。 サンプルを参考に、今回はフィルム素材ステッカー(耐水)/銀ツヤを採用しました。 -h3. 印刷するステッカーの種類と数 +### 印刷するステッカーの種類と数 今回は、以下の種類と枚数を発注することにしました。 -* Groonga 400枚 -* Mroonga 400枚 -* Droonga 200枚 -* 合計 1000枚 +- Groonga 400枚 +- Mroonga 400枚 +- Droonga 200枚 +- 合計 1000枚 この時、種類と枚数を考えるのにはコツがあります。 業者を利用した印刷では、印刷するシートの数が増えれば増えるほど料金がかさむ傾向にあります。 ですので、費用を安く抑えるためには以下のような工夫をします。 -* 複数の図柄は1つのシートに可能な限りまとめましょう。 - 同じ3種類のステッカーを作成する時でも、3種類を別々に100枚ずつ印刷するのと、3種類のステッカーを1枚のシートにまとめた物を100回印刷した後でそれを3つに切り離して300枚にするのとでは、後者の方が安上がりになることが多いです。 - !/images/stickers/howto-print/different-2-in-1.png(図:異なる図柄をまとめる例)! -* 同じ図柄を1つのデータの中に複数個含めて、1回の印刷で複数枚のステッカーができるようにしましょう。 - 同じステッカーを200枚作成する時でも、1シートに1つだけ図柄があるステッカーを200回印刷して200枚のステッカーにするのと、1シートに同じ図柄が2つあるステッカーを100回印刷した後でそれを2つに切り離して200枚のステッカーにするのとでは、後者の方が安上がりになることが多いです。 - !/images/stickers/howto-print/same-2-in-1.png(図:同じ図柄を複数は位置する例)! +- 複数の図柄は1つのシートに可能な限りまとめましょう。 + + 同じ3種類のステッカーを作成する時でも、3種類を別々に100枚ずつ印刷するのと、3種類のステッカーを1枚のシートにまとめた物を100回印刷した後でそれを3つに切り離して300枚にするのとでは、後者の方が安上がりになることが多いです。 + + ![図:異なる図柄をまとめる例](/images/stickers/howto-print/different-2-in-1.png "図:異なる図柄をまとめる例") +- 同じ図柄を1つのデータの中に複数個含めて、1回の印刷で複数枚のステッカーができるようにしましょう。 + + 同じステッカーを200枚作成する時でも、1シートに1つだけ図柄があるステッカーを200回印刷して200枚のステッカーにするのと、1シートに同じ図柄が2つあるステッカーを100回印刷した後でそれを2つに切り離して200枚のステッカーにするのとでは、後者の方が安上がりになることが多いです。 + + ![図:同じ図柄を複数は位置する例](/images/stickers/howto-print/same-2-in-1.png "図:同じ図柄を複数は位置する例") 以上の理由から、今回は1シートにGroongaの図柄を2枚分、Mroongaを2枚分、Droongaを1枚分印刷することにし、それを200シート発注しました。 実際に入稿したデータはこちらになります。 -* "20131111sticker.ai":/images/stickers/howto-print/20131111sticker.ai.zip - +- [20131111sticker.ai](/images/stickers/howto-print/20131111sticker.ai.zip) -h3. 入稿データの作成方法 +### 入稿データの作成方法 データ入稿可能な印刷会社では、データの作成方法の案内が用意されている場合が多いです。 -デジタの場合は "シール・ラベル印刷 - テクニカルガイド":http://www.digitaprint.jp/seal_technical.php というページがあり、こちらにAdobe IllustratorおよびAdobe Photoshopを使う場合の注意事項、DTPそのものの基礎知識の簡単な説明が掲載されています。 +デジタの場合は [シール・ラベル印刷 - +テクニカルガイド](http://www.digitaprint.jp/seal_technical.php) +というページがあり、こちらにAdobe IllustratorおよびAdobe +Photoshopを使う場合の注意事項、DTPそのものの基礎知識の簡単な説明が掲載されています。 今回は、Adobe Illustrator CS4を使用してデータを作成しました。 -h4. ドキュメントを作成し、用紙サイズ(アートボードの大きさ)を決める +#### ドキュメントを作成し、用紙サイズ(アートボードの大きさ)を決める デジタの場合、用紙サイズについては特に規定は無いようで、発注はステッカーの面積を基準に行うようになっています。 作りたいステッカーの大きさが決まっていないのであれば、データの作成時にはアートボードの大きさは敢えて決めずに作業し、最後に図柄全体が収まるようにアートボードの大きさを調整するとよいでしょう。今回はひとまずA4で作成することにします。 カラーモードはCMYKを選択しましょう。 -h4. レイヤを分ける +#### レイヤを分ける ステッカーの印刷用データは、まず最初に図柄が印刷され、その後、カットラインに沿ってステッカーの形に切り抜かれる、という工程を経て実際のステッカーになります。 ですので、ステッカーの印刷用データには、図柄のデータとカットラインのデータの2種類が必要になります。 - "Groongaのステッカー用データ":http://groonga.org/ja/sticker/ も、図柄データとカットラインデータの両方を公開しています。 + [Groongaのステッカー用データ](http://groonga.org/ja/sticker/) +も、図柄データとカットラインデータの両方を公開しています。 -Adobe IllustratorやAdobe Photoshopのデータで入稿する場合は、1つのファイルの中で、印刷用データとカットライン用データをそれぞれ別のレイヤに分けておけば良いということが多いです。 +Adobe IllustratorやAdobe +Photoshopのデータで入稿する場合は、1つのファイルの中で、印刷用データとカットライン用データをそれぞれ別のレイヤに分けておけば良いということが多いです。 先の入稿用データでは、デジタのデータ作成ガイドラインに従って「カットライン」という名前のレイヤを作り、カットライン用データはすべてそこにまとめています。 -!/images/stickers/howto-print/layers.png(図:カットライン用のレイヤを分けてある様子)! +![図:カットライン用のレイヤを分けてある様子](/images/stickers/howto-print/layers.png "図:カットライン用のレイヤを分けてある様子") -h4. 図柄を配置する +#### 図柄を配置する では、図柄を配置しましょう。 - "公開されているGroongaのステッカー用データ":http://groonga.org/ja/sticker/ は、PDFとSVGの2形式が存在します。 + +[公開されているGroongaのステッカー用データ](http://groonga.org/ja/sticker/) +は、PDFとSVGの2形式が存在します。 どちらを使っても良いのですが、今回はPDFを使うことにします。 白背景、黒背景、縁取り有りのいずれかの図柄のファイルをダウンロードし、図柄用のレイヤに置きます。 また、図柄に対応するハーフカットライン用のデータもダウンロードし、こちらはカットライン用のレイヤに置きます。 -!/images/stickers/howto-print/objects.png(図:カットライン用のオブジェクトはカットライン用のレイヤに、図柄のオブジェクトは図柄のレイヤに置いた様子)! +![図:カットライン用のオブジェクトはカットライン用のレイヤに、図柄のオブジェクトは図柄のレイヤに置いた様子](/images/stickers/howto-print/objects.png "図:カットライン用のオブジェクトはカットライン用のレイヤに、図柄のオブジェクトは図柄のレイヤに置いた様子") データはリンクファイルのままにせず、「画像を埋め込み」で印刷用データの中に入れておきましょう。 (ダウンロードしたデータをIllustratorで開いてコピーし、印刷用データの中にペーストしても、同じ結果になります。) この時点ではまだ、図柄とハーフカットラインがずれていると思いますので、今のうちに位置を揃えておきます。 オブジェクト選択ツールで図柄とカットラインの両方を一度に選択し、整列ツールを使って水平・垂直共に整列させましょう。 -!/images/stickers/howto-print/align.png(図:カットラインと図柄を中央揃えで整列した様子)! +![図:カットラインと図柄を中央揃えで整列した様子](/images/stickers/howto-print/align.png "図:カットラインと図柄を中央揃えで整列した様子") 公開しているステッカー用データは重心位置が同じなので、この方法できちんと図柄とカットラインの位置を合わせることができます。 同様にして、1シート内に配置するすべての図柄と、それぞれに対応するカットラインを各レイヤに置きます。 すべての図柄が揃ったら、実際にできあがるステッカーのシート上でどのように配置するかを検討します。 今回はそれぞれの図柄ごとに切り離して使う予定なので、切り離しやすいように若干の間隔を開けて、それぞれをまっすぐ一列に並べました。 -!/images/stickers/howto-print/layout.png(図:切り離すことを前提とした、最終的なレイアウト)! +![図:切り離すことを前提とした、最終的なレイアウト](/images/stickers/howto-print/layout.png "図:切り離すことを前提とした、最終的なレイアウト") この時、図柄とカットラインは必ず一緒に移動するように気をつけましょう。 図柄ごとに切り離さないで、1シートに複数のステッカーがある状態で配布したい場合は、余白を少なくしてギリギリまで各図柄を寄せて配置します。 これは、全体の面積を小く抑えられれば、その分、印刷代が安くなるからです。 -!/images/stickers/howto-print/layout-minimum.png(図:切り離さないことを前提とした、最終的なレイアウト)! +![図:切り離さないことを前提とした、最終的なレイアウト](/images/stickers/howto-print/layout-minimum.png "図:切り離さないことを前提とした、最終的なレイアウト") ただし、あまりに余白を削りすぎると、印刷やカットがうまくいかなくなる恐れがあります。 印刷を発注する先の会社にもよりますが、カットライン同士は2mmから3mm程度、またカットラインの外周と用紙の外周との間も4mm程度は開けるように配置しておくと良いでしょう。 -h4. 用紙サイズ(アートボードの大きさ)を調整する +#### 用紙サイズ(アートボードの大きさ)を調整する ステッカーの大きさを特に決めていなかった場合は、この時点でアートボードの大きさを調整し、ステッカーの大きさを確定しましょう。 @@ -105,53 +118,56 @@ h4. 用紙サイズ(アートボードの大きさ)を調整する 公開されているステッカー用データはすべて、文字はアウトライン化済みとなっています。 アピアランスの分割等は特に行う必要はありません。 -h3. 注文内容 +### 注文内容 -入稿データの作成が完了したら、 "シール印刷のページ":http://www.digitaprint.jp/seal.php から注文を開始します。 +入稿データの作成が完了したら、 +[シール印刷のページ](http://www.digitaprint.jp/seal.php) +から注文を開始します。 まずは、素材を選択し、その後サイズと枚数を選びます。あとは加工オプションを指定すれば完了です。 今回の注文内容は以下の通りとなりました。 -* [納期]納期 8営業日 -* [支払方法]クレジットカード -* [名称]ステッカー印刷(自由形)/フィルム素材ステッカー(耐水)/銀ツヤ -* [色数]フルカラー -* [サイズ]250平方センチ以内 -* [オプション加工]強粘着/4カット追加/200パス以内/1シートに複数枚 -* [金額]49,860円 +- [納期]納期 8営業日 +- [支払方法]クレジットカード +- [名称]ステッカー印刷(自由形)/フィルム素材ステッカー(耐水)/銀ツヤ +- [色数]フルカラー +- [サイズ]250平方センチ以内 +- [オプション加工]強粘着/4カット追加/200パス以内/1シートに複数枚 +- [金額]49,860円 各指定項目について少し説明します。 -* サイズ -** 入稿用データが収まる最小のサイズを選択します。今回の入稿用データは250平方センチ以内に収まる形でした。 -* 4カット追加 -** 1シートに複数のステッカーを印刷する場合、カットの追加が必要です。今回は1シートに5枚のステッカーを入れているので、4カット追加となります。(1カット分は基本料金に含まれています) -* 200パス以内 -** データに含めたカットラインのパス数の合計が収まる最小の選択肢を選びます。公開している各ステッカーのカットラインのパス数は以下の通りです。(今回のパス数は 33 (Groonga)×2+30(Mroonga)×2+35(Droonga)=161 でした。) -*** Groonga:33パス -*** Groonga 縁取り有り:33パス -*** Mroonga:30パス -*** Mroonga 縁取り有り:30パス -*** Rroonga:36パス -*** Rroonga 縁取り有り:30パス -*** Nroonga:33パス -*** Nroonga 縁取り有り:30パス -*** Droonga:35パス -*** Droonga 縁取り有り:35パス -* 1シートに複数枚 -** 1枚の台紙に複数枚のステッカーがついた状態で納品されます。今回は会社にあるディスクカッターで1枚ずつ切り分けるのでこの形態にしました。もし1枚ずつ切り離された状態になっているほうがよければ、追加料金を払えばカットしてもらえます。 - -h3. データの入稿 +- サイズ + - 入稿用データが収まる最小のサイズを選択します。今回の入稿用データは250平方センチ以内に収まる形でした。 +- 4カット追加 + - 1シートに複数のステッカーを印刷する場合、カットの追加が必要です。今回は1シートに5枚のステッカーを入れているので、4カット追加となります。(1カット分は基本料金に含まれています) +- 200パス以内 + - データに含めたカットラインのパス数の合計が収まる最小の選択肢を選びます。公開している各ステッカーのカットラインのパス数は以下の通りです。(今回のパス数は + 33 (Groonga)×2+30(Mroonga)×2+35(Droonga)=161 でした。) + - Groonga:33パス + - Groonga 縁取り有り:33パス + - Mroonga:30パス + - Mroonga 縁取り有り:30パス + - Rroonga:36パス + - Rroonga 縁取り有り:30パス + - Nroonga:33パス + - Nroonga 縁取り有り:30パス + - Droonga:35パス + - Droonga 縁取り有り:35パス +- 1シートに複数枚 + - 1枚の台紙に複数枚のステッカーがついた状態で納品されます。今回は会社にあるディスクカッターで1枚ずつ切り分けるのでこの形態にしました。もし1枚ずつ切り離された状態になっているほうがよければ、追加料金を払えばカットしてもらえます。 + +### データの入稿 注文を確定後に、データを入稿します。今回はデジタのサイト上で入稿しました。 -h3. 納品まで +### 納品まで 入稿の翌日に、デジタの担当者から確認の電話がありました。サイズやパス数の指定が間違っていたときは、ここで訂正してもらえます。その後訂正内容に基づいて、注文内容の変更の連絡がメールであります。 あとは、納品まで待ちます。今回の場合11月11日に注文して、11月12日に注文内容の変更、11月22日に受け取りました。 ちなみに、発注は200枚でしたが、おまけで予備が10枚ついてきました(※ついてこない場合もあります)。 ステッカーの枚数としては210*5で1050枚。1枚あたり48円でできました。 -h3. まとめ +### まとめ 今回はデジタさんを利用してGroongaステッカーを作成する方法を紹介しました。 Renamed: ja/_posts/2014-03-29-droonga-1.0.1.md (+6 -4) 74% =================================================================== --- ja/_posts/2014-03-29-droonga-1.0.1.textile 2016-02-07 10:35:40 +0900 (3557918) +++ ja/_posts/2014-03-29-droonga-1.0.1.md 2016-02-07 10:50:24 +0900 (c2e009d) @@ -3,12 +3,15 @@ layout: post.ja title: Droonga 1.0.1 をリリースしました --- -h2. Droonga 1.0.1 をリリースしました +Droonga 1.0.1 をリリースしました +-------------------------------- -"Droonga 1.0.1":http://droonga.org/news/2014/03/29/release.html をリリースしました! +[Droonga 1.0.1](http://droonga.org/news/2014/03/29/release.html) +をリリースしました! Droongaは、ストリーム指向の処理モデルを採用したスケーラブルなデータ処理エンジンです。 -「Distributed Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 +「Distributed +Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 検索、更新、集約などの多くの操作がパイプラインを通じて行われるこのモデルにより、 Droongaは高い柔軟性と拡張性を備えています。 また、既存操作の組み合わせによる複雑な操作にも対応しています。 @@ -16,4 +19,3 @@ Droongaは高い柔軟性と拡張性を備えています。 Droonga は現在活発に開発が行われております。 興味を持たれた方は、試しに使ってみたり、ぜひ開発に参加してください! - Renamed: ja/_posts/2014-03-29-release.md (+72 -92) 57% =================================================================== --- ja/_posts/2014-03-29-release.textile 2016-02-07 10:35:40 +0900 (7d44911) +++ ja/_posts/2014-03-29-release.md 2016-02-07 10:50:24 +0900 (b5bff4e) @@ -4,43 +4,46 @@ title: Groonga 4.0.1リリース description: Groonga 4.0.1をリリースしました! --- +Groonga 4.0.1リリース +--------------------- -h2. Groonga 4.0.1リリース +2月9日のメジャーアップデート以来しばらく間があきましたが、 [Groonga +4.0.1](/ja/docs/news.html#release-4-0-1) をリリースしました! -2月9日のメジャーアップデート以来しばらく間があきましたが、 "Groonga 4.0.1":/ja/docs/news.html#release-4-0-1 をリリースしました! - -それぞれの環境毎のインストール方法: "インストール":/ja/docs/install.html +それぞれの環境毎のインストール方法: +[インストール](/ja/docs/install.html) 今回、データベースの肥大化解消のために非互換な変更がはいっています。その恩恵を受けるためにはデータベースのつくりなおしが必要です。 これにともない、新しいGroongaで一度でもデータベースを開くと、古いGroongaではデータベースを開けなくなることに注意してください。 -h3. データベースの肥大化を解消できるようになりました +### データベースの肥大化を解消できるようになりました 今回のリリースでは、データベースの肥大化を解消する仕組みが有効になりました。 前にもそんなことを聞いた気がする人がいるかもしれないので、前回までの肥大化抑制のとりくみをおさらいしてみましょう。 -* 3.1.0でGRN_JA_SKIP_SAME_VALUE_PUTを追加 +- 3.1.0でGRN_JA_SKIP_SAME_VALUE_PUTを追加 + +同じ値なら更新をスキップすることで、新たに領域を確保せず肥大化を抑制する仕組みでした。 - 同じ値なら更新をスキップすることで、新たに領域を確保せず肥大化を抑制する仕組みでした。 - ただしまだ実験的な扱いで、使いたい人は明示的に設定を変更してくださいという扱いでした。 +ただしまだ実験的な扱いで、使いたい人は明示的に設定を変更してくださいという扱いでした。 -* 3.1.2でGRN_JA_SKIP_SAME_VALUE_PUT=yesが標準に +- 3.1.2でGRN_JA_SKIP_SAME_VALUE_PUT=yesが標準に - それまで使いたい人がいたら使ってね、という扱いだったのを、必ず適用するようにしました。 - これは、3.1.0で導入して以降、効果が認められたための措置です。 +それまで使いたい人がいたら使ってね、という扱いだったのを、必ず適用するようにしました。 + これは、3.1.0で導入して以降、効果が認められたための措置です。 今回のリリースでは、可変長データの扱いを工夫することでデータベースの肥大化を解消できるようになりました。詳細については、「Groongaでの可変長データの管理方法」が図入りでわかりやすいです。 -* "Groongaでの可変長データの管理方法":http://www.clear-code.com/blog/2014/3/13.html +- [Groongaでの可変長データの管理方法](http://www.clear-code.com/blog/2014/3/13.html) ただし、後方互換とするために、肥大化抑制の恩恵を受けるためにはデータベースを新しくつくりなおす必要があります。 まとめると -* 4.0.0以前のデータベースは4.0.1でもそのまま開けます -* ただし4.0.1のデータベースは以前のGroongaでは開けません -* データベースを新しく作りなおすと肥大化抑制効果があります +- 4.0.0以前のデータベースは4.0.1でもそのまま開けます +- ただし4.0.1のデータベースは以前のGroongaでは開けません +- データベースを新しく作りなおすと肥大化抑制効果があります ということになります。 @@ -48,136 +51,113 @@ h3. データベースの肥大化を解消できるようになりました <html> <img src="http://d3j5vwomefv46c.cloudfront.net/photos/large/843929509.png?1394947803"> -</html> +</html> 以前のデータベースをそのまま継続して使っているとどんどん肥大化していっていますが(4.0.0-72-continue)、データベースを新規につくりなおすと肥大化を抑制できていることがわかります。(4.0.0-72-new) -h3. 重みつきベクターカラムをサポートしました +### 重みつきベクターカラムをサポートしました 今回のリリースでは、ベクターカラムにキーと値のペアを複数格納できるようになりました。これが重みつきベクターカラムです。 例えば、ユーザーの属性をタグ付けするのに、これまでだと"どんな属性か"というのは以下のようにしてベクターカラムを使って複数のタグ付けすることができました。 -<pre> -column_create Users tags COLUMN_VECTOR ShortText -</pre> + column_create Users tags COLUMN_VECTOR ShortText ただし、属性に偏りがある場合には、これだけでは不十分です。そのため属性に対応した重みは属性ごとに別のカラムを追加して重みを格納するなどの工夫が必要でした。(カラム定義だと次のようなイメージ) - -<pre> -column_create Users tags COLUMN_VECTOR ShortText -column_create Users tags_A COLUMN_SCALAR Int32 -column_create Users tags_B COLUMN_SCALAR Int32 -column_create Users tags_C COLUMN_SCALAR Int32... -</pre> + + column_create Users tags COLUMN_VECTOR ShortText + column_create Users tags_A COLUMN_SCALAR Int32 + column_create Users tags_B COLUMN_SCALAR Int32 + column_create Users tags_C COLUMN_SCALAR Int32... 重みつきベクターカラムをサポートしたことで、そういったカラムをひとつにまとめることができるようになりました。(カラム定義だと次のようなイメージ)カラム定義で、WITH_WEIGHTを使うのがポイントです。 -<pre> -column_create Users tags COLUMN_VECTOR|WITH_WEIGHT ShortText -</pre> + column_create Users tags COLUMN_VECTOR|WITH_WEIGHT ShortText こうすることで、次のようなキーと値のペアをベクターカラムに格納できるようになります。 -<pre> -{"タグA":重み1, "タグB":重み2, "タグC":重み3, ...} -</pre> + {"タグA":重み1, "タグB":重み2, "タグC":重み3, ...} -h3. 検索結果に対して重みを調整するadjusterオプションをサポートしました +### 検索結果に対して重みを調整するadjusterオプションをサポートしました 今回のリリースでは、selectコマンドのオプションとしてadjusterオプションをサポートしました。 重みというと、これまででもmatch_columnでカラムに対する重みづけはできていたような、と思うかも知れません。どんな違いがあるのかというと次のとおりです。 -* match_column - * マッチしているカラムの検索結果に対して重みづけをすることができる -* adjuster - * カラムの特定のキーについて重みづけをすることができる。 +- match_column + * マッチしているカラムの検索結果に対して重みづけをすることができる +- adjuster + * カラムの特定のキーについて重みづけをすることができる。 今回サポートされた重みつきベクターカラムとあわせて使うことで、よりきめこまかな検索を行うことができます。 たとえば、Groongaをよく使っている人をリストアップしたいといった場合考えてみましょう。よく使っている度合いを示す重みつきベクターカラムに格納しているとします。 サンプルとして使うスキーマ定義は次の通りです。 -<pre> -table_create User TABLE_HASH_KEY ShortText -column_create User weight COLUMN_VECTOR|WITH_WEIGHT ShortText -column_create User tags COLUMN_VECTOR ShortText + table_create User TABLE_HASH_KEY ShortText + column_create User weight COLUMN_VECTOR|WITH_WEIGHT ShortText + column_create User tags COLUMN_VECTOR ShortText -table_create Weight TABLE_HASH_KEY ShortText -column_create Weight weight_index COLUMN_INDEX|WITH_WEIGHT User weight + table_create Weight TABLE_HASH_KEY ShortText + column_create Weight weight_index COLUMN_INDEX|WITH_WEIGHT User weight -table_create Tag TABLE_PAT_KEY ShortText -column_create Tag tags_index COLUMN_INDEX User tags -</pre> + table_create Tag TABLE_PAT_KEY ShortText + column_create Tag tags_index COLUMN_INDEX User tags サンプルデータを次のようにしてロードします。 -<pre> -load --table User -[ - { - "_key":"alice", - "weight":{"Groonga":30, "Mroonga":20}, - "tags": ["Groonga", "Mroonga"] - }, - { - "_key":"bob", - "weight":{"Groonga":50}, - "tags": ["Groonga"] - }, - { - "_key":"carol", - "weight":{"Groonga":40,"Mroonga":30}, - "tags": ["Groonga", "Mroonga"] - } -] -</pre> - + load --table User + [ + { + "_key":"alice", + "weight":{"Groonga":30, "Mroonga":20}, + "tags": ["Groonga", "Mroonga"] + }, + { + "_key":"bob", + "weight":{"Groonga":50}, + "tags": ["Groonga"] + }, + { + "_key":"carol", + "weight":{"Groonga":40,"Mroonga":30}, + "tags": ["Groonga", "Mroonga"] + } + ] + 単に、"Groonga"を使っているというだけなら次のようにして"tags"カラムに"Groonga"を含むレコードを検索すればよさそうです。 -<pre> -select User --output_columns _key,_score,* --sortby -_score --filter 'tags @ "Groonga"' -</pre> + select User --output_columns _key,_score,* --sortby -_score --filter 'tags @ "Groonga"' しかし、欲しいのは使っている度合いに応じた結果です。そのためにadjusterオプションを次のようにして使います。 -<pre> -select User --output_columns _key,_score,* --sortby -_score --filter 'tags @ "Groonga"' --adjuster 'weight @ "Groonga" * 10' -</pre> + select User --output_columns _key,_score,* --sortby -_score --filter 'tags @ "Groonga"' --adjuster 'weight @ "Groonga" * 10' adjusterに渡しているパラメータは次のようになっています。 -<pre> -'weight @ "Groonga" * 10' -</pre> + 'weight @ "Groonga" * 10' これは、'weight'カラムに"Groonga"というキーワードがあるものの重みを10倍にする、ということを意味します。そのため、重みを考慮したスコアの順に並びかえて結果を取得することができます。 Groongaの重みが大きい"bob"が一番上になりました。 -<pre> -["bob",511,["Groonga"],{"Groonga":50}], -["carol",411,["Groonga","Mroonga"],{"Groonga":40,"Mroonga":30}], -["alice",311,["Groonga","Mroonga"],{"Groonga":30,"Mroonga":20}] -</pre> + ["bob",511,["Groonga"],{"Groonga":50}], + ["carol",411,["Groonga","Mroonga"],{"Groonga":40,"Mroonga":30}], + ["alice",311,["Groonga","Mroonga"],{"Groonga":30,"Mroonga":20}] Groongaだけじゃなくて、Mroongaも使っている人を重視したいなら、adjusterに"Mroonga"を指定すれば目的の結果が得られます。 -<pre> -select User --output_columns _key,_score,* --sortby -_score --filter 'tags @ "Groonga"' --adjuster 'weight @ "Mroonga" * 10' -</pre> + select User --output_columns _key,_score,* --sortby -_score --filter 'tags @ "Groonga"' --adjuster 'weight @ "Mroonga" * 10' Mroongaの重みが大きい"carol"が一番上になりました。 -<pre> -["carol",311,["Groonga","Mroonga"],{"Groonga":40,"Mroonga":30}], -["alice",211,["Groonga","Mroonga"],{"Groonga":30,"Mroonga":20}], -["bob",1,["Groonga"],{"Groonga":50}] -</pre> + ["carol",311,["Groonga","Mroonga"],{"Groonga":40,"Mroonga":30}], + ["alice",211,["Groonga","Mroonga"],{"Groonga":30,"Mroonga":20}], + ["bob",1,["Groonga"],{"Groonga":50}] -h3. さいごに +### さいごに -4.0.0からの詳細な変更点は "4.0.1リリース 2014/03/29":/ja/docs/news.html#release-4-0-1 を確認してください。 +4.0.0からの詳細な変更点は [4.0.1リリース +2014/03/29](/ja/docs/news.html#release-4-0-1) を確認してください。 それでは、Groongaでガンガン検索してください! Added: ja/_posts/2014-03-29-sapporoonga.md (+81 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2014-03-29-sapporoonga.md 2016-02-07 10:50:24 +0900 (7feef59) @@ -0,0 +1,81 @@ +--- +layout: post.ja +title: 全文検索エンジンGroonga勉強会@札幌が開催されました! +description: 全文検索エンジンGroonga勉強会@札幌が開催されました! +--- + +全文検索エンジンGroonga勉強会@札幌が開催されました! +----------------------------------------------------- + +肉の日にあわせて、 [全文検索エンジンGroonga勉強会@札幌 +2014/03/29](http://atnd.org/events/48055) が開催されました! + +### 開催のきっかけ + +[草の根Groongaイベントのお誘い](http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-December/001937.html) +というメールが +[groonga-dev](http://lists.sourceforge.jp/mailman/listinfo/groonga-dev) +に流れており、それを見た [@myokoym](https://twitter.com/myokoym) +さんが地元の札幌でGroongaの導入事例を聞きたいと思ったことが開催のきっかけでした。 + +### 開催までの流れ + + �� myokoymさんは、まずgroonga-devに +[札幌でのGroongaイベントについて](http://sourceforge.jp/projects/groonga/lists/archive/dev/2014-February/002128.html) +というメールを投稿しました。すると、たくさんの方々が賛同してくれたので、 +[札幌市内の公営貸会議室利用法](http://chiraura.hhiro.net/?page=%BB%A5%CB%DA%BB%D4%C6%E2%A4%CE%B8%F8%B1%C4%C2%DF%B2%F1%B5%C4%BC%BC%CD%F8%CD%D1%CB%A1) +を参考にしながら会場を確保し、ATNDやTwitter、メーリングリストなどで告知しました。 + +### 当日の様子 + +当日は、 [ステッカー](http://groonga.org/ja/sticker/) や +[書籍](http://ec.nikkeibp.co.jp/item/books/P84610.html) 、 +[東京のお菓子](https://twitter.com/myokoym/status/450162471534198785) +などが片隅に並べられ、和やかな雰囲気で始まりました。途中、プロジェクターが映らなくなるというトラブルがありましたが、プロジェクターを再起動して復旧しました。全体的に、参加者の方々が積極的に協力してくれていたことが印象的でした。主催者の方はとても助かっていたのではないかと思います。(なお、Twitterでの反応は +[Togetterまとめ](http://togetter.com/li/650017) でご覧いただけます) + +### 発表について + +今回の勉強会では、たくさんの利用事例が発表されました。 + +- [Droongaのはじめかた](http://slide.rabbit-shocker.org/authors/kou/sapporoonga-20140329/) (クリアコードの須藤さん) + ユーザー視点で使いやすくなった [Droonga](http://droonga.org/ja/) + 1.0.1の紹介がありました。DroongaはGroongaを利用しているため、教養としてGroongaを知っておくべきということで、発表時間の多くがGroongaの紹介に充てられていました。これからDroonga(Groonga)をはじめる方々に最適な内容だったのではないでしょうか。 + +<!-- --> + +- [Mroongaを選んだ理由とちょっと嬉しかった話](http://www.slideshare.net/marcyterui/mroonga) (JAWS-UG札幌の照井さん) + 突然の日本語全文検索案件に対応するに当たり、いろいろな全文検索エンジンを検討した結果、最終的に + [Mroonga](http://mroonga.org/ja/) を採用した経緯を話されました。 + [CentOS6にMySQL5.6×Mroonga環境を一発で作るChefレシピ](https://github.com/marcy-cookbooks/mysql56-mroonga) + も紹介されており、全文検索エンジンの採用を検討している方々に最適な内容だったのではないでしょうか。 + +<!-- --> + +- [はじめてのGroonga + bindingづくり](https://speakerdeck.com/dara/the-first-step-for-building-groonga-bindings-with-golang) (えにしテックのしだらさん) + [Go](http://golang.org/) + というプログラミング言語でGroongaのバインディングをつくってみようというお話でした。GroongaはC言語で書かれていますが、他の言語のバインディングを作成することで、その言語の特徴を活かしながらGroongaを組み合わせることができます。Goやまだバインディングが作成されていない言語からGroongaを使いたい方々に最適な内容だったのではないでしょうか。 + +<!-- --> + +- [地域コミュニティサイトLOHABUU](http://www.slideshare.net/nikunoki/groongalohabuu) (アンタスの紀國さん) + [LOHABUU](http://lohabuu.net/) + でのGroonga導入事例の紹介です。LOHABUUは、いろいろなサービスの情報を地域やキーワードごとにまとめてリアルタイム表示してくれる地域コミュニティサイトです。Groongaを導入するに当たり、よかったことや苦労したことなどが紹介されました。何年も前から稼働しているサービスなので、実際に生き生きと活用されている場面が見られました。Groongaを使ったサービスの運用を考えている方々に最適な内容だったのではないでしょうか。 + +他にも、LT枠として3人の方が発表されました。バラエティ豊かな内容で、会場はとても盛り上がっていました。 + +### 懇親会 + +勉強会終了後、 [北海しゃぶしゃぶ 北2条店](http://r.gnavi.co.jp/h700800/) +で懇親会が行われました。感じのよい店員さんばかりで、心ゆくまでラムしゃぶを楽しめました。有志による二次会も +[電気羊酒場 JR55ビル店](http://r.gnavi.co.jp/h006628/) +で開催され、深夜までGroongaについて語り合っていたようでした。 + +### さいごに + +今回の勉強会を主催してくださった@myokoymさん、発表してくださったみなさん、参加してくださったみなさん、Twitterなどで広めてくださったみなさん、どうもありがとうございました。 +[夕べ](http://atnd.org/events/43461) +に比べると規模は小さかったですが、みなさんのおかげでとてもよい会になったと思います。 + +またどこかで草の根Groongaイベントが開催されるといいですね! Deleted: ja/_posts/2014-03-29-sapporoonga.textile (+0 -45) 100644 =================================================================== --- ja/_posts/2014-03-29-sapporoonga.textile 2016-02-07 10:35:40 +0900 (998bb33) +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: post.ja -title: 全文検索エンジンGroonga勉強会@札幌が開催されました! -description: 全文検索エンジンGroonga勉強会@札幌が開催されました! ---- - -h2. 全文検索エンジンGroonga勉強会@札幌が開催されました! - -肉の日にあわせて、 "全文検索エンジンGroonga勉強会@札幌 2014/03/29":http://atnd.org/events/48055 が開催されました! - -h3. 開催のきっかけ - -"草の根Groongaイベントのお誘い":http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-December/001937.html というメールが "groonga-dev":http://lists.sourceforge.jp/mailman/listinfo/groonga-dev に流れており、それを見た "@myokoym":https://twitter.com/myokoym さんが地元の札幌でGroongaの導入事例を聞きたいと思ったことが開催のきっかけでした。 - -h3. 開催までの流れ - - �� myokoymさんは、まずgroonga-devに "札幌でのGroongaイベントについて":http://sourceforge.jp/projects/groonga/lists/archive/dev/2014-February/002128.html というメールを投稿しました。すると、たくさんの方々が賛同してくれたので、 "札幌市内の公営貸会議室利用法":http://chiraura.hhiro.net/?page=%BB%A5%CB%DA%BB%D4%C6%E2%A4%CE%B8%F8%B1%C4%C2%DF%B2%F1%B5%C4%BC%BC%CD%F8%CD%D1%CB%A1 を参考にしながら会場を確保し、ATNDやTwitter、メーリングリストなどで告知しました。 - -h3. 当日の様子 - -当日は、 "ステッカー":http://groonga.org/ja/sticker/ や "書籍":http://ec.nikkeibp.co.jp/item/books/P84610.html 、 "東京のお菓子":https://twitter.com/myokoym/status/450162471534198785 などが片隅に並べられ、和やかな雰囲気で始まりました。途中、プロジェクターが映らなくなるというトラブルがありましたが、プロジェクターを再起動して復旧しました。全体的に、参加者の方々が積極的に協力してくれていたことが印象的でした。主催者の方はとても助かっていたのではないかと思います。(なお、Twitterでの反応は "Togetterまとめ":http://togetter.com/li/650017 でご覧いただけます) - -h3. 発表について - -今回の勉強会では、たくさんの利用事例が発表されました。 - -* "Droongaのはじめかた":http://slide.rabbit-shocker.org/authors/kou/sapporoonga-20140329/ (クリアコードの須藤さん) ユーザー視点で使いやすくなった "Droonga":http://droonga.org/ja/ 1.0.1の紹介がありました。DroongaはGroongaを利用しているため、教養としてGroongaを知っておくべきということで、発表時間の多くがGroongaの紹介に充てられていました。これからDroonga(Groonga)をはじめる方々に最適な内容だったのではないでしょうか。 - -* "Mroongaを選んだ理由とちょっと嬉しかった話":http://www.slideshare.net/marcyterui/mroonga (JAWS-UG札幌の照井さん) 突然の日本語全文検索案件に対応するに当たり、いろいろな全文検索エンジンを検討した結果、最終的に "Mroonga":http://mroonga.org/ja/ を採用した経緯を話されました。 "CentOS6にMySQL5.6×Mroonga環境を一発で作るChefレシピ":https://github.com/marcy-cookbooks/mysql56-mroonga も紹介されており、全文検索エンジンの採用を検討している方々に最適な内容だったのではないでしょうか。 - -* "はじめてのGroonga bindingづくり":https://speakerdeck.com/dara/the-first-step-for-building-groonga-bindings-with-golang (えにしテックのしだらさん) "Go":http://golang.org/ というプログラミング言語でGroongaのバインディングをつくってみようというお話でした。GroongaはC言語で書かれていますが、他の言語のバインディングを作成することで、その言語の特徴を活かしながらGroongaを組み合わせることができます。Goやまだバインディングが作成されていない言語からGroongaを使いたい方々に最適な内容だったのではないでしょうか。 - -* "地域コミュニティサイトLOHABUU":http://www.slideshare.net/nikunoki/groongalohabuu (アンタスの紀國さん) "LOHABUU":http://lohabuu.net/ でのGroonga導入事例の紹介です。LOHABUUは、いろいろなサービスの情報を地域やキーワードごとにまとめてリアルタイム表示してくれる地域コミュニティサイトです。Groongaを導入するに当たり、よかったことや苦労したことなどが紹介されました。何年も前から稼働しているサービスなので、実際に生き生きと活用されている場面が見られました。Groongaを使ったサービスの運用を考えている方々に最適な内容だったのではないでしょうか。 - -他にも、LT枠として3人の方が発表されました。バラエティ豊かな内容で、会場はとても盛り上がっていました。 - -h3. 懇親会 - -勉強会終了後、 "北海しゃぶしゃぶ 北2条店":http://r.gnavi.co.jp/h700800/ で懇親会が行われました。感じのよい店員さんばかりで、心ゆくまでラムしゃぶを楽しめました。有志による二次会も "電気羊酒場 JR55ビル店":http://r.gnavi.co.jp/h006628/ で開催され、深夜までGroongaについて語り合っていたようでした。 - -h3. さいごに - -今回の勉強会を主催してくださった@myokoymさん、発表してくださったみなさん、参加してくださったみなさん、Twitterなどで広めてくださったみなさん、どうもありがとうございました。 "夕べ":http://atnd.org/events/43461 に比べると規模は小さかったですが、みなさんのおかげでとてもよい会になったと思います。 - -またどこかで草の根Groongaイベントが開催されるといいですね! Renamed: ja/_posts/2014-04-29-droonga-1.0.2.md (+10 -5) 52% =================================================================== --- ja/_posts/2014-04-29-droonga-1.0.2.textile 2016-02-07 10:35:40 +0900 (7137c7c) +++ ja/_posts/2014-04-29-droonga-1.0.2.md 2016-02-07 10:50:24 +0900 (687fc36) @@ -3,16 +3,21 @@ layout: post.ja title: Droonga 1.0.2 をリリースしました --- -h2. Droonga 1.0.2 をリリースしました +Droonga 1.0.2 をリリースしました +-------------------------------- -"Droonga 1.0.2":http://droonga.org/news/2014/04/29/release.html をリリースしました! +[Droonga 1.0.2](http://droonga.org/news/2014/04/29/release.html) +をリリースしました! Droongaは、ストリーム指向の処理モデルを採用したスケーラブルなデータ処理エンジンです。 -「Distributed Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 +「Distributed +Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 今回のリリースでは、GroongaのHTTPサーバとの互換性が向上しました。 -セットアップの手順が簡素化されてきたのに加えて、Groonga互換機能の拡充により、すでにGroongaをお使いの方にはGroonga HTTPサーバと同じ感覚でお使いいただけるようになってきています。 -"Groongaユーザ向けのチュートリアル":http://droonga.org/tutorial/groonga/ も新たに用意しましたので、ぜひ一度お試しください。 +セットアップの手順が簡素化されてきたのに加えて、Groonga互換機能の拡充により、すでにGroongaをお使いの方にはGroonga +HTTPサーバと同じ感覚でお使いいただけるようになってきています。 +[Groongaユーザ向けのチュートリアル](http://droonga.org/tutorial/groonga/) +も新たに用意しましたので、ぜひ一度お試しください。 Droonga は現在活発に開発が行われております。 興味を持たれた方は、試しに使ってみたり、ぜひ開発に参加してください! Added: ja/_posts/2014-04-29-groonga-meetup-2.md (+127 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2014-04-29-groonga-meetup-2.md 2016-02-07 10:50:24 +0900 (5914a86) @@ -0,0 +1,127 @@ +--- +layout: post.ja +title: Groonga Meetup 2014/04/29を開催しました! +description: Groonga Meetup 2014/04/29を開催しました! +--- + +Groonga Meetup 2014/04/29を開催しました! +----------------------------------------- + +肉の日ということで、 [Groonga Meetup +2014/04/29](http://atnd.org/events/49639) を開催しました! + +イベントに参加してくれた人にレポート書いてみませんか、と声掛けしてみたところ、以下の3名の方に快く応じていただけました。ありがとうございます!参加者目線で見た当日の様子が伺えますね。 + +- [`redfigure":https://twitter.com/redfigure さん + * "`flame1980](https://twitter.com/flame1980) さん +- [@OsamuIchikawa](https://twitter.com/OsamuIckw) さん + +### [@redfigure](https://twitter.com/redfigure) さんの参加レポート + +こんにちは、主に業務でGroongaを利用しているエンジニア、Walkerです。 +今回参加してみようと思ったきっかけは「最初の一歩」という点でGroongaの導入部分について詳しく触れることができそうだという興味からでした。動いているGroongaを触ることは多いのですが、インストールから手を動かすことで、より理解を深めてみようという意気込みで飛び込んでみた形です。 + +今回使われたスライドは共有されると思いますのでアジェンダとかはそちらにお任せします。 + +では実際に行ったGroongaとMroongaの演習について簡単にまとめてみます。 + +1. Groongaの演習 + 基本的にインストールそのものはGroongaの公式ドキュメント + [インストール](http://groonga.org/ja/docs/install.html) + ページに記載された内容で構築しています。 + 実は私の持ち込んだ環境がUbuntu14.04だったのですが、この環境のパッケージは当日アップしたばかりのものだったらしく貴重な体験をさせていただきました。 + インストール後、データを投入してWeb管理画面を表示してということをやってみましたが、本当に簡単でApache + Solrを触ったことのある人はびっくりするかもしれません。 +2. Mroongaの演習 + Groonga同様、インストールそのものはMroongaの公式ドキュメント + [インストール](http://mroonga.org/ja/docs/install.html) + ページに記載された内容で構築しました。 + Mroongaの構築は初めてだったので主催の須藤さんにサポートをいただきながら無事動作確認をとることができました。 + インストールが完了してから実際に検索できるようになるまではGroonga同様とても簡単です。ただしMySQL/MariaDBについて、Linuxディストリビューションのバージョンによってはハマるポイントになるかもしれません。 +3. 所感 + 時間配分としてインストールと簡単な操作が中心となっていたので、次回はデータのロードや検索まわりについてハンズオンの時間を切っていただけるとより幸せになれるような気がしました。 + 初心者向けという点では全体的に理解しやすい内容ですし、演習中の雰囲気もとても良く安心して参加できるのではないかと思います。 + 主催の林さん、須藤さん、ありがとうございました。 + +### [@flame1980](https://twitter.com/flame1980) さんの参加レポート + +私は普段、Groonga/Mroongaを業務で利用させて頂いているのですが、 +今回のテーマが「全文検索をしたい人の最初の一歩を踏みだしやすくしよう」という事で、 +初心に戻る気持ちで参加しました。 + +参加者は全部で9名と、こじんまりとした会となりましたが、初心者向けということで程よい感じだったのかなと思います。 +皆さん真剣に聴講・作業されていましたし、主催の林さん、須藤さんも丁寧にサポートされていて、とても良い雰囲気でした。 + +#### おおまかな流れ + +1. Groongaとは +2. Mroongaとは +3. Groongaのインストール + - ざっくりと説明いただいたあと、その流れのままに実践形式で各自用意した環境へインストールをしました。基本的には + [groonga.org](http://groonga.org/ja/docs/install.html) 、 + [mroonga.org](http://mroonga.org/ja/docs/install.html) + のインストールマニュアルを参照しながら、不明点や躓いた時などはお二人の手厚いサポートを受けながら、作業が進んでいきました。 + +4. Mroongaのインストール + - Groongaと同様にインストールしていきました。環境によっては、MySQLやMariaDBのバージョンなどで苦戦している人もいたようですが、私は特に躓くこともなく、サックリとインストールできました。インストールして素のままのCentOSを使ったのが良かったのかもしれません。 + +5. サンプルコードを用いてGroongaを使ってみる + - Groongaへデータをロードする + - Groongaのデータを更新する + - Groongaのデータを検索する + - Groongaのデータを削除する + - HTTP経由でテーブル作成する + - HTTP経由でカラム追加する + - POSTでデータを更新する + - HTTP経由で検索する + +6. Groonga管理画面について +7. 質疑応答 + +#### 所感 + +インストールの時間が長めになってしまい、サンプルコードの説明が駆け足になってしまっていたのが残念でした。 +次回の開催があるとしたら、是非ともGroongaの使い方を掘り下げてもらえると、個人的にはとても嬉しいです。 +例えば、一般的な検索の説明をひと通り実践形式でやってみたり、ドリルダウン検索のコツやトークナイザーの使い分けなんかも良いかなと思います。 +もちろん、上記インストールマニュアルでひと通り説明されているのですが、その場で質問をしたりできるとより理解が深まるかと思います。 + +### [@OsamuIchikawa](https://twitter.com/OsamuIckw) さんの参加レポート + +#### 作業/演習内容 + +1. [Groongaインストール](http://groonga.org/ja/docs/install/centos.html#centos-6) +2. [Mroongaインストール](http://mroonga.org/ja/docs/install.html#centos-6) +3. [サンプル](http://packages.groonga.org/tmp/groonga-meetup-20140429.tar.gz) + 実行 + +#### 自分の知識レベル + +- Groonga/Mroongaについて存在を知っている程度でさわった経験なし +- Linux操作は日常レベルで使用 + +#### 環境 + +- CentOS 6.5(mac os x上のVM) + +#### つまづいた事 + +Groongaインストール + +- yumでgroognaをインストールしようとしたらミラーサイト先がグルジアからのダウンロードになってしまったため、個別にrpmパッケージをダウンロードしてインストールになりました。(http://packages.groonga.org/centos/6/x86_64/からwgetで下記をダウンロードしてインストール) + +<!-- --> + + # yum localinstall groonga-4.0.1-1.el6.x86_64.rpm groonga-httpd-4.0.1-1.el6.x86_64.rpm groonga-libs-4.0.1-1.el6.x86_64.rpmgroonga-httpd-4.0.1-1.el6.x86_64.rpm + +※以降(groonga-tokenizer-mecab等)は手順どおりにインストールできました。 + +#### 感想 + +道に迷ってしまい(通行人に郵便局の場所を聞いたら別の郵便局に・・・)30分遅れの参加になってしまったにも関わらず、親切に教えていただけて無事サンプル実行まで行うことができました。今回の勉強会で、導入の敷居が高くないことも分かりましたし、実際に手元で動作させてみることで、使い方や、これからの利用方法について考えることが出来てとても良かったです。ありがとうございました。 + +### さいごに + +年一回開催しているGroongaを囲む夕べとは違い、実際にその場でGroongaやMroongaをインストールしてみたり、サンプルを試してみたりといった初心者向けの会でした。今回はサンプルの都合上groonga-httpdを使いましたが、このことがきっかけで、/d/status/というような末尾に/があるリクエストを投げると正しくレスポンスが返ってこないという問題があることがわかりました。参加者からのフィードバックがきっかけとなり、気づいていなかった問題を修正することができました。ありがとうございます! + +今回のMeetupが無事開催にこぎつけたのも、会場提供してくださった +[WEICさん](http://www.weic.jp/) のおかげです。ありがとうございました! Deleted: ja/_posts/2014-04-29-groonga-meetup-2.textile (+0 -112) 100644 =================================================================== --- ja/_posts/2014-04-29-groonga-meetup-2.textile 2016-02-07 10:35:40 +0900 (efbcda6) +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: post.ja -title: Groonga Meetup 2014/04/29を開催しました! -description: Groonga Meetup 2014/04/29を開催しました! ---- - -h2. Groonga Meetup 2014/04/29を開催しました! - -肉の日ということで、 "Groonga Meetup 2014/04/29":http://atnd.org/events/49639 を開催しました! - -イベントに参加してくれた人にレポート書いてみませんか、と声掛けしてみたところ、以下の3名の方に快く応じていただけました。ありがとうございます!参加者目線で見た当日の様子が伺えますね。 - -* "@redfigure":https://twitter.com/redfigure さん -* "@flame1980":https://twitter.com/flame1980 さん -* "@OsamuIchikawa":https://twitter.com/OsamuIckw さん - -h3. "@redfigure":https://twitter.com/redfigure さんの参加レポート - -こんにちは、主に業務でGroongaを利用しているエンジニア、Walkerです。 -今回参加してみようと思ったきっかけは「最初の一歩」という点でGroongaの導入部分について詳しく触れることができそうだという興味からでした。動いているGroongaを触ることは多いのですが、インストールから手を動かすことで、より理解を深めてみようという意気込みで飛び込んでみた形です。 - -今回使われたスライドは共有されると思いますのでアジェンダとかはそちらにお任せします。 - -では実際に行ったGroongaとMroongaの演習について簡単にまとめてみます。 - -# Groongaの演習 -基本的にインストールそのものはGroongaの公式ドキュメント "インストール":http://groonga.org/ja/docs/install.html ページに記載された内容で構築しています。 -実は私の持ち込んだ環境がUbuntu14.04だったのですが、この環境のパッケージは当日アップしたばかりのものだったらしく貴重な体験をさせていただきました。 -インストール後、データを投入してWeb管理画面を表示してということをやってみましたが、本当に簡単でApache Solrを触ったことのある人はびっくりするかもしれません。 -# Mroongaの演習 -Groonga同様、インストールそのものはMroongaの公式ドキュメント "インストール":http://mroonga.org/ja/docs/install.html ページに記載された内容で構築しました。 -Mroongaの構築は初めてだったので主催の須藤さんにサポートをいただきながら無事動作確認をとることができました。 -インストールが完了してから実際に検索できるようになるまではGroonga同様とても簡単です。ただしMySQL/MariaDBについて、Linuxディストリビューションのバージョンによってはハマるポイントになるかもしれません。 -# 所感 -時間配分としてインストールと簡単な操作が中心となっていたので、次回はデータのロードや検索まわりについてハンズオンの時間を切っていただけるとより幸せになれるような気がしました。 -初心者向けという点では全体的に理解しやすい内容ですし、演習中の雰囲気もとても良く安心して参加できるのではないかと思います。 -主催の林さん、須藤さん、ありがとうございました。 - -h3. "@flame1980":https://twitter.com/flame1980 さんの参加レポート - -私は普段、Groonga/Mroongaを業務で利用させて頂いているのですが、 -今回のテーマが「全文検索をしたい人の最初の一歩を踏みだしやすくしよう」という事で、 -初心に戻る気持ちで参加しました。 - -参加者は全部で9名と、こじんまりとした会となりましたが、初心者向けということで程よい感じだったのかなと思います。 -皆さん真剣に聴講・作業されていましたし、主催の林さん、須藤さんも丁寧にサポートされていて、とても良い雰囲気でした。 - -h4. おおまかな流れ - -# Groongaとは -# Mroongaとは -# Groongaのインストール -** ざっくりと説明いただいたあと、その流れのままに実践形式で各自用意した環境へインストールをしました。基本的には "groonga.org":http://groonga.org/ja/docs/install.html 、 "mroonga.org":http://mroonga.org/ja/docs/install.html のインストールマニュアルを参照しながら、不明点や躓いた時などはお二人の手厚いサポートを受けながら、作業が進んでいきました。 -# Mroongaのインストール -** Groongaと同様にインストールしていきました。環境によっては、MySQLやMariaDBのバージョンなどで苦戦している人もいたようですが、私は特に躓くこともなく、サックリとインストールできました。インストールして素のままのCentOSを使ったのが良かったのかもしれません。 -# サンプルコードを用いてGroongaを使ってみる -** Groongaへデータをロードする -** Groongaのデータを更新する -** Groongaのデータを検索する -** Groongaのデータを削除する -** HTTP経由でテーブル作成する -** HTTP経由でカラム追加する -** POSTでデータを更新する -** HTTP経由で検索する -# Groonga管理画面について -# 質疑応答 - -h4. 所感 - -インストールの時間が長めになってしまい、サンプルコードの説明が駆け足になってしまっていたのが残念でした。 -次回の開催があるとしたら、是非ともGroongaの使い方を掘り下げてもらえると、個人的にはとても嬉しいです。 -例えば、一般的な検索の説明をひと通り実践形式でやってみたり、ドリルダウン検索のコツやトークナイザーの使い分けなんかも良いかなと思います。 -もちろん、上記インストールマニュアルでひと通り説明されているのですが、その場で質問をしたりできるとより理解が深まるかと思います。 - -h3. "@OsamuIchikawa":https://twitter.com/OsamuIckw さんの参加レポート - -h4. 作業/演習内容 - -# "Groongaインストール":http://groonga.org/ja/docs/install/centos.html#centos-6 -# "Mroongaインストール":http://mroonga.org/ja/docs/install.html#centos-6 -# "サンプル":http://packages.groonga.org/tmp/groonga-meetup-20140429.tar.gz 実行 - -h4. 自分の知識レベル - -* Groonga/Mroongaについて存在を知っている程度でさわった経験なし -* Linux操作は日常レベルで使用 - -h4. 環境 - -* CentOS 6.5(mac os x上のVM) - -h4. つまづいた事 - -Groongaインストール - -* yumでgroognaをインストールしようとしたらミラーサイト先がグルジアからのダウンロードになってしまったため、個別にrpmパッケージをダウンロードしてインストールになりました。(http://packages.groonga.org/centos/6/x86_64/からwgetで下記をダウンロードしてインストール) - -<pre> -# yum localinstall groonga-4.0.1-1.el6.x86_64.rpm groonga-httpd-4.0.1-1.el6.x86_64.rpm groonga-libs-4.0.1-1.el6.x86_64.rpmgroonga-httpd-4.0.1-1.el6.x86_64.rpm -</pre> - -※以降(groonga-tokenizer-mecab等)は手順どおりにインストールできました。 - -h4. 感想 - -道に迷ってしまい(通行人に郵便局の場所を聞いたら別の郵便局に・・・)30分遅れの参加になってしまったにも関わらず、親切に教えていただけて無事サンプル実行まで行うことができました。今回の勉強会で、導入の敷居が高くないことも分かりましたし、実際に手元で動作させてみることで、使い方や、これからの利用方法について考えることが出来てとても良かったです。ありがとうございました。 - -h3. さいごに - -年一回開催しているGroongaを囲む夕べとは違い、実際にその場でGroongaやMroongaをインストールしてみたり、サンプルを試してみたりといった初心者向けの会でした。今回はサンプルの都合上groonga-httpdを使いましたが、このことがきっかけで、/d/status/というような末尾に/があるリクエストを投げると正しくレスポンスが返ってこないという問題があることがわかりました。参加者からのフィードバックがきっかけとなり、気づいていなかった問題を修正することができました。ありがとうございます! - -今回のMeetupが無事開催にこぎつけたのも、会場提供してくださった "WEICさん":http://www.weic.jp/ のおかげです。ありがとうございました! Added: ja/_posts/2014-05-29-droonga-1.0.3.md (+23 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2014-05-29-droonga-1.0.3.md 2016-02-07 10:50:24 +0900 (579251e) @@ -0,0 +1,23 @@ +--- +layout: post.ja +title: Droonga 1.0.3 をリリースしました +--- + +Droonga 1.0.3 をリリースしました +-------------------------------- + +[Droonga 1.0.3](http://droonga.org/news/2014/05/29/release.html) +をリリースしました! + +Droongaは、Groongaと互換性がある分散型の全文検索システムです。 +「Distributed +Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 + +今回のリリースでは、サービスを停止させることなくクラスタのノード構成を変更できるようになりました。詳しくは、 +[ダンプとリストアの手順](http://droonga.org/ja/tutorial/1.0.3/dump-restore/) +と +[replicaの構成の変更手順](http://droonga.org/ja/tutorial/1.0.3/add-replica/) +の2つの新しいチュートリアルを参照してください。 + +Droonga は現在活発に開発が行われております。 +興味を持たれた方は、試しに使ってみたり、ぜひ開発に参加してください! Deleted: ja/_posts/2014-05-29-droonga-1.0.3.textile (+0 -17) 100644 =================================================================== --- ja/_posts/2014-05-29-droonga-1.0.3.textile 2016-02-07 10:35:40 +0900 (c5970f6) +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: post.ja -title: Droonga 1.0.3 をリリースしました ---- - -h2. Droonga 1.0.3 をリリースしました - -"Droonga 1.0.3":http://droonga.org/news/2014/05/29/release.html をリリースしました! - -Droongaは、Groongaと互換性がある分散型の全文検索システムです。 -「Distributed Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 - -今回のリリースでは、サービスを停止させることなくクラスタのノード構成を変更できるようになりました。詳しくは、 "ダンプとリストアの手順":http://droonga.org/ja/tutorial/1.0.3/dump-restore/ と "replicaの構成の変更手順":http://droonga.org/ja/tutorial/1.0.3/add-replica/ の2つの新しいチュートリアルを参照してください。 - -Droonga は現在活発に開発が行われております。 -興味を持たれた方は、試しに使ってみたり、ぜひ開発に参加してください! - Added: ja/_posts/2014-06-29-droonga-1.0.4.md (+23 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2014-06-29-droonga-1.0.4.md 2016-02-07 10:50:24 +0900 (ff6f5b5) @@ -0,0 +1,23 @@ +--- +layout: post.ja +title: Droonga 1.0.4 をリリースしました +--- + +Droonga 1.0.4 をリリースしました +-------------------------------- + +[Droonga 1.0.4](http://droonga.org/news/2014/06/29/release.html) +をリリースしました! + +Droongaは、Groongaと互換性がある分散型の全文検索システムです。 +「Distributed +Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 + +今回のリリースでは、新しいコマンドラインツールによってクラスタのノード構成を簡単に変更できるようになりました。詳しくは、 +[ダンプとリストアの手順](http://droonga.org/ja/tutorial/1.0.4/dump-restore/) +と +[replicaの構成の変更手順](http://droonga.org/ja/tutorial/1.0.4/add-replica/) +の2つのチュートリアルを参照してください。 + +Droonga は現在活発に開発が行われております。 +興味を持たれた方は、試しに使ってみたり、ぜひ開発に参加してください! Deleted: ja/_posts/2014-06-29-droonga-1.0.4.textile (+0 -17) 100644 =================================================================== --- ja/_posts/2014-06-29-droonga-1.0.4.textile 2016-02-07 10:35:40 +0900 (0ebb705) +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: post.ja -title: Droonga 1.0.4 をリリースしました ---- - -h2. Droonga 1.0.4 をリリースしました - -"Droonga 1.0.4":http://droonga.org/news/2014/06/29/release.html をリリースしました! - -Droongaは、Groongaと互換性がある分散型の全文検索システムです。 -「Distributed Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 - -今回のリリースでは、新しいコマンドラインツールによってクラスタのノード構成を簡単に変更できるようになりました。詳しくは、 "ダンプとリストアの手順":http://droonga.org/ja/tutorial/1.0.4/dump-restore/ と "replicaの構成の変更手順":http://droonga.org/ja/tutorial/1.0.4/add-replica/ の2つのチュートリアルを参照してください。 - -Droonga は現在活発に開発が行われております。 -興味を持たれた方は、試しに使ってみたり、ぜひ開発に参加してください! - Renamed: ja/_posts/2014-07-29-droonga-1.0.5.md (+9 -4) 70% =================================================================== --- ja/_posts/2014-07-29-droonga-1.0.5.textile 2016-02-07 10:35:40 +0900 (b219551) +++ ja/_posts/2014-07-29-droonga-1.0.5.md 2016-02-07 10:50:24 +0900 (53d06ae) @@ -3,17 +3,22 @@ layout: post.ja title: Droonga 1.0.5 をリリースしました --- -h2. Droonga 1.0.5 をリリースしました +Droonga 1.0.5 をリリースしました +-------------------------------- -"Droonga 1.0.5":http://droonga.org/news/2014/07/29/release.html をリリースしました! +[Droonga 1.0.5](http://droonga.org/news/2014/07/29/release.html) +をリリースしました! Droongaは、Groongaと互換性がある分散型の全文検索システムです。 -「Distributed Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 +「Distributed +Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 今回のリリースでは、安定性に関わるいくつかの問題が修正されました。 そのため、より実運用に投入しやすくなってきています。 -また、明日30日夜に、Droongaの現状の報告とヒアリングを兼ねたイベント「 "Droonga Meetup":http://groonga.doorkeeper.jp/events/13291 」を開催します。 +また、明日30日夜に、Droongaの現状の報告とヒアリングを兼ねたイベント「 +[Droonga Meetup](http://groonga.doorkeeper.jp/events/13291) +」を開催します。 現在運用中のGroongaベースのWebアプリケーションをDroongaへ移行される事を検討中の方や、Groongaの運用でレプリケーションの実現にお悩みの方など、「Groonga」と「分散」という2つのキーワードに関心をお持ちの方は、ぜひお越し下さい。 Droonga は現在活発に開発が行われております。 Renamed: ja/_posts/2014-09-29-droonga-1.0.6.md (+6 -3) 68% =================================================================== --- ja/_posts/2014-09-29-droonga-1.0.6.textile 2016-02-07 10:35:40 +0900 (68f474f) +++ ja/_posts/2014-09-29-droonga-1.0.6.md 2016-02-07 10:50:24 +0900 (e2b52fb) @@ -3,12 +3,15 @@ layout: post.ja title: Droonga 1.0.6 をリリースしました --- -h2. Droonga 1.0.6 をリリースしました +Droonga 1.0.6 をリリースしました +-------------------------------- -"Droonga 1.0.6":http://droonga.org/news/2014/09/29/release.ja.html をリリースしました! +[Droonga 1.0.6](http://droonga.org/news/2014/09/29/release.ja.html) +をリリースしました! Droongaは、Groongaと互換性がある分散型の全文検索システムです。 -「Distributed Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 +「Distributed +Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 今回のリリースでは、インストールスクリプトが用意されました。 Droongaの構成コンポーネントのインストールと、システムのサービスとしての登録を簡単に行えるようになりましたので、より気軽にDroongaをお試しいただけます。 Added: ja/_posts/2014-10-07-droonga-1.0.7.md (+21 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2014-10-07-droonga-1.0.7.md 2016-02-07 10:50:24 +0900 (756da65) @@ -0,0 +1,21 @@ +--- +layout: post.ja +title: Droonga 1.0.7 をリリースしました +--- + +Droonga 1.0.7 をリリースしました +-------------------------------- + +[Droonga 1.0.7](http://droonga.org/news/2014/10/07/release.ja.html) +をリリースしました! + +Droongaは、Groongaと互換性がある分散型の全文検索システムです。 +「Distributed +Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 + +今回のリリースでは、サービス起動スクリプトの致命的な欠陥が修正されました。 +Droonga +1.0.6を試された方は、リリースアナウンスに書かれている手順に従って、必ず1.0.7への更新をお願いします。 + +Droonga は現在活発に開発が行われております。 +興味を持たれた方は、試しに使ってみたり、ぜひ開発に参加してください! Deleted: ja/_posts/2014-10-07-droonga-1.0.7.textile (+0 -17) 100644 =================================================================== --- ja/_posts/2014-10-07-droonga-1.0.7.textile 2016-02-07 10:35:40 +0900 (1516928) +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: post.ja -title: Droonga 1.0.7 をリリースしました ---- - -h2. Droonga 1.0.7 をリリースしました - -"Droonga 1.0.7":http://droonga.org/news/2014/10/07/release.ja.html をリリースしました! - -Droongaは、Groongaと互換性がある分散型の全文検索システムです。 -「Distributed Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 - -今回のリリースでは、サービス起動スクリプトの致命的な欠陥が修正されました。 -Droonga 1.0.6を試された方は、リリースアナウンスに書かれている手順に従って、必ず1.0.7への更新をお願いします。 - -Droonga は現在活発に開発が行われております。 -興味を持たれた方は、試しに使ってみたり、ぜひ開発に参加してください! Renamed: ja/_posts/2014-11-29-droonga-1.0.8.md (+6 -3) 68% =================================================================== --- ja/_posts/2014-11-29-droonga-1.0.8.textile 2016-02-07 10:35:40 +0900 (40785f0) +++ ja/_posts/2014-11-29-droonga-1.0.8.md 2016-02-07 10:50:24 +0900 (502ff28) @@ -3,12 +3,15 @@ layout: post.ja title: Droonga 1.0.8 をリリースしました --- -h2. Droonga 1.0.8 をリリースしました +Droonga 1.0.8 をリリースしました +-------------------------------- -"Droonga 1.0.8":http://droonga.org/news/2014/11/29/release.ja.html をリリースしました! +[Droonga 1.0.8](http://droonga.org/news/2014/11/29/release.ja.html) +をリリースしました! Droongaは、Groongaと互換性がある分散型の全文検索システムです。 -「Distributed Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 +「Distributed +Groonga」に由来するその名が示す通り、DroongaはGroongaをベースに構築されています。 今回のリリースでは、フロントエンドのHTTPサーバがバックエンドとして 複数のDroonga Engineノードに接続できるようになりました。