Kouhei Sutou
kou****@clear*****
2014年 2月 12日 (水) 17:21:54 JST
須藤です。 In <CANgwiJyVr8LCug7axOaajsfj4X1g=QE_66UK9****@mail*****> "[groonga-dev,02125] Re: groonga のテーブル設計がさっぱりわかりません" on Mon, 10 Feb 2014 18:50:18 +0900, Hiroyuki TAKEDA <leiqu****@gmail*****> wrote: >> たしかにこちらでも再現しました。 >> (Debian GNU/LinuxのGNOME環境で真ん中クリックでコピー) >> 調べておきます。コピーする方が区切ってしまっている気もするのですが。。。 > > 他のプログラム、例えばviには全文貼り付けできるので、GNOME環境の問題では無いと思います。 試しに、簡単なCのプラグラムを書いてみました。 Groongaで標準入力から読み込んでいる箇所は↓な感じの処理になっ ていて、このプログラムでも問題が再現しました。(リダイレクト したりパイプ経由にすると全部のテキストを読み込めて、コピペし て貼り付けると途中までしか読めない。) fgets(3)の使い方を間違えているのかしら。。。 -- #include <stdio.h> #include <string.h> #define BUFFER_SIZE 4096 int main(void) { for (;;) { char buffer[BUFFER_SIZE]; size_t length; if (!fgets(buffer, BUFFER_SIZE, stdin)) { printf("EOF\n"); return 0; } length = strlen(buffer); if (length == 0) { printf("empty read\n"); return 0; } if (buffer[length - 1] == '\n') { printf("\nline: <%zd>\n<%s>\n", length, buffer); } else { printf("read: <%zd>\n", length); } } return 0; } -- > もしかしたらですが、readlineライブラリに4KBの制限があったと思います。それが問題なら、 > > groonga-master\groonga-master\vendor\mruby-eeac4be\mrbgems\mruby-bin-mirb\tools\mirb\mirb.c > > が対象ファイル。かな。かしら。そこまでコード追ってません。。 実は、GroongaはReadlineではなく、libeditを使っている(*)んで すが、手元のlibeditサポートなしビルドでも再現したので、 Readline関連ライブラリーは関係なさそうです。。。うーん。 (*) GroongaがLGPLv2.1 onlyなのでGPLv3のReadlineとリンクしたパッ ケージを配布できない。 今回は違うっぽいですが、アイディアありがとうございました! >> 1. TokenMecabが指定されていることの確認: > > root @ dev-VirtualBox:~# groonga /var/lib/groonga/wikipedia.db dump | grep _create ... > table_create JapaneseTerms TABLE_PAT_KEY ShortText --normalizer NormalizerAuto ← ここ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ... > と確認したら --default_tokenizer TokenMecab が抜けてました(汗 > テーブルを作りなおしたらちゃんと検索なれるようになりました。 よかったです! > いつも親切な説明でありがとうございます! いえいえ! -- 須藤 功平 <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