[groonga-dev,02125] Re: groonga のテーブル設計がさっぱりわかりません

Hiroyuki TAKEDA leiqu****@gmail*****
2014年 2月 10日 (月) 18:50:18 JST


早速のお返事ありがとうございます!

> たしかにこちらでも再現しました。
> (Debian GNU/LinuxのGNOME環境で真ん中クリックでコピー)
> 調べておきます。コピーする方が区切ってしまっている気もするのですが。。。

他のプログラム、例えばviには全文貼り付けできるので、GNOME環境の問題では無いと思います。
もしかしたらですが、readlineライブラリに4KBの制限があったと思います。それが問題なら、

groonga-master\groonga-master\vendor\mruby-eeac4be\mrbgems\mruby-bin-mirb\tools\mirb\mirb.c

が対象ファイル。かな。かしら。そこまでコード追ってません。。

> 1. TokenMecabが指定されていることの確認:

root @ dev-VirtualBox:~# groonga /var/lib/groonga/wikipedia.db dump | grep
_create
table_create Articles TABLE_PAT_KEY ShortText
column_create Articles revision COLUMN_SCALAR Int32
column_create Articles text_ja COLUMN_SCALAR LongText
column_create Articles timestamp COLUMN_SCALAR Time
column_create Articles title COLUMN_SCALAR ShortText
column_create Articles user COLUMN_SCALAR ShortText
column_create Articles user_id COLUMN_SCALAR UInt64
table_create Terms TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram
--normalizer NormalizerAuto
table_create JapaneseTerms TABLE_PAT_KEY ShortText --normalizer
NormalizerAuto ← ここ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
table_create Times TABLE_PAT_KEY Time
column_create Times articles_timestamp COLUMN_INDEX Articles timestamp
column_create JapaneseTerms articles_text
COLUMN_INDEX|WITH_SECTION|WITH_POSITION Articles title,text_ja
column_create Terms articles_text COLUMN_INDEX|WITH_SECTION|WITH_POSITION
Articles _key,user

と確認したら --default_tokenizer TokenMecab が抜けてました(汗
テーブルを作りなおしたらちゃんと検索なれるようになりました。
転ぶポイントがひとつ分って良かったです。

select Articles --match_columns text_ja --query 花の美しさを見つけたのは

とか

select Articles --match_columns text_ja --query 花を愛するのも人間だもの。

で63KBの本文が検索されるようになりました!

お騒がせしてすみませんでした、
いつも親切な説明でありがとうございます!
今後ともよろしくお願いいたします。


2014年2月10日 16:50 Kouhei Sutou <kou****@clear*****>:

> 須藤です。
>
> In <CANgwiJxgo3iqKt=Y8roxZw3C33+5rRF4L75Au68cHa+esDiu_w****@mail*****>
>   "[groonga-dev,02123] Re: groonga のテーブル設計がさっぱりわかりません" on Mon, 10 Feb 2014
> 16:10:14 +0900,
>   Hiroyuki TAKEDA <leiqu****@gmail*****> wrote:
>
> > 先日教えていただいたWikipediaのテーブル定義でデータベースを作り、
> > 実際にWikipediaのデータをロードさせたのですが、うまくいきませんでした。
>
> そうですか。。。
>
> > それでgroongaのコマンドから対話モードでロードさせると4KBぐらいのところで途切れてしまいました。
>
> たしかにこちらでも再現しました。
> (Debian GNU/LinuxのGNOME環境で真ん中クリックでコピー)
> 調べておきます。コピーする方が区切ってしまっている気もするのですが。。。
>
> > 2014-02-10 15:48:35.784123|e| groonga(+0x4ff9) [0x7fb9dc6a8ff9]
> > 2014-02-10 15:48:35.784136|e|
> > /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7fb9dba88de5]
> > 2014-02-10 15:48:35.784148|e| groonga(+0x5412) [0x7fb9dc6a9412]
> > 2014-02-10 15:48:35.784228|w| grn_str_charlen_utf8(): incomplete
> character
> > 2014-02-10 15:48:35.784248|e| [table][load] failed to set column value:
> too
> > long key: (94770): key: <"1">, column: <text_ja>, value: <"
> > あさ、眼をさますときの気持は、面白い。か"...(94986)>
> > 2014-02-10 15:48:35.796680|n| grn_fin (0)
> >
> > とキーが長すぎるとエラーが出ていました。直接的な原因はテーブルの主キーのサイズの4096B制限だと思うのですが、
> > えーと、大きめのテキストをロードしたいときはどうすればいいのでしょうか。
>
> うまくトークナイズできずに、text_ja全体を1つのトークンとして
> 扱ってしまっているように見えます。
> (Articlesテーブルではなく、JapaneseTermsテーブルの方が制限
> にひっかかってそう。)
>
> なので、トークナイザーの指定がおかしいのではないかという気が
> します。考えられる原因は次の通りです。
>
>   * MeCabサポートなしでGroongaがビルドされているのに
>     TokenMecabを使っている。
>   * TokenMecabをtypoしている。
>
> 確認するために次のコマンドの結果を教えてもらえませんか?
>
> 1. TokenMecabが指定されていることの確認:
>
>   # groonga /var/lib/groonga/wikipedia.db dump | grep _create
>
> TermsとJapaneseTermsに--default_tokenizerの指定があるかを確
> 認します。Groongaは--default_tokenizerに存在しないトークナイ
> ザーを指定しても単純に無視するのでMeCabサポートなしでGroonga
> をビルドしていると--default_tokenizerがでてきません。
>
>
> 2. MeCabサポート付きでビルドされているかの確認:
>
>   % groonga --version
>   groonga 3.1.2-19-g87075e5 [...,mecab,...]
>
>   configure options: <...>
>
> 「[...]」の中に「mecab」と入っていなければMeCabサポート付き
> でビルドされていません。
>
>
> 3. テーブル定義に間違いがないかの確認
>
> テーブル定義をそのままコピペしてください。問題がないか確認し
> たいです。
>
>
>
> --
> 須藤 功平 <kou****@clear*****>
> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)
>
> Groongaサポート:
>   http://groonga.org/ja/support/
> パッチ採用はじめました:
>   http://www.clear-code.com/recruitment/
> コミットへのコメントサービスはじめました:
>   http://www.clear-code.com/services/commit-comment.html
>
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
>



groonga-dev メーリングリストの案内