Kouhei Sutou
kou****@clear*****
2012年 4月 9日 (月) 17:21:16 JST
須藤です。 In <CAKYRMJKr4bFQut0_8E=0rosHrGVPc4yKawRdiovy_XqWky****@mail*****> "[groonga-dev,00756] ERROR 1026 (HY000): too long key: (4097)" on Mon, 9 Apr 2012 12:07:48 +0900, Jun Nishikawa <topaz****@gmail*****> wrote: > fulltext key を貼った column に 4096 byte を超えるデータを INSERT しようとすると、 > 下記エラーが発生してクエリが失敗します。 > ERROR 1026 (HY000): too long key: (4097) > > 入れようとしているデータは以下のような amazon の商品説明文です。 > http://www.amazon.co.jp/dp/0262081946 > (div#productDescription の中身です。) > > 可能であれば mysql の text 型上限 (65,535 byte) 程度までは入れたいのですが、 > 今のところ下記定数を書き換えて再コンパイルするしかないのでしょうか? > groonga-2.0.0/include/groonga.h:662:#define GRN_TABLE_MAX_KEY_SIZE > (0x1000) > > データサイズとしてはごく一般的なサイズだと思うので > GRN_TABLE_MAX_KEY_SIZE が増えるか、 > my.cnf で調整できるようになる方が、みんな嬉しいと思いますがいかがでしょう? あれ、入るはずなんですけど。。。 SHOW CREATE TABLEの結果を見せてもらえますか? (もし、可能であればサンプルINSERT文もあると嬉しいです。) パーサー(トークナイザー)の指定がうまくいっていない気がしま す。 fulltext keyを指定したカラムの転置索引のキーは、文書をトーク ナイズしたトークンになります。(TokenBigramを使っているなら数 文字程度。)なので、たとえ商品説明文のように長い文書でも転置 索引のキーは4096バイトまでいくことがないんです。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) プログラミングが好きなソフトウェア開発者を募集中: http://www.clear-code.com/recruitment/