taku miyamoto
taku_miyam****@dwang*****
2006年 9月 12日 (火) 16:50:15 JST
初めての投稿となります。 宮本と申します。よろしくお願いいたします。 現在、N-gramインデックスを用いたsennaのインストール及び利用がうまくいか ず困っております。 解決策やヒントなどございましたらご教授願えればと思いMLにメールをさせてい ただきました。 長文にて失礼いたしますが、ご教授のほどよろしくお願いいたします。 下記環境にてsennaのHPのインストールのページを参考にインストールの操作を 行いましたが、うまくインストールができませんでした。 その際の実行時のログなどを表示させていただきました。 ------------------------------------------------------------------------------------ 【環境】 Miracle Linux 3.0 libtoolize ver 1.5.22 autoconf ver 2.60 automake ver 1.9.6 bison ver 2.3 【インストール】 mecab-0.93 mecab-ipadic-2.7.0-20060707 senna-0.8.0 mysql-4.0.27 ------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------ 【Mecab インストール】 # tar zxfv mecab-0.93.tar.gz # cd mecab-0.93 # ./configure --with-charset=sjis # make # make install 【Mecab辞書のインストール】 # tar zxfv mecab-ipadic-2.7.0-20060707.tar.gz # mecab-ipadic-2.7.0-20060707 # ./configure --with-charset=sjis # make # make install 【senna の configure】 # wget http://dev.razil.jp/archive/senna/senna-latest-svn.tar.gz # tar xvfz senna-latest-svn.tar.gz # cd senna # ./configure --prefix=/usr --without-mecab # make # sudo make install 【senna.conf の編集】 # /var/senna/senna.conf DEFAULT_ENCODING sjis ------------------------------------------------------------------------------------ 次に、Mysqlのインストール作業なのですが、senna の HP のインストール方法 に従って、以下の作業を行っていると、 # libtoolize -c -f # aclocal-1.9 # autoheader # automake-1.9 -c -a -i # autoconf [Senna-dev 289] にて、山下様が報告なさっているlibtoolize及びautoconfの実 行時のエラーが発生し、その後も作業を続けるとmake中にエラーが発生しまいま す。 そこで、いろいろなHPを参考に以下の要領でインストールをおこないました。 ------------------------------------------------------------------------------------ 【mysql インストール】 # tar zxf mysql-4.0.27.tar.gz # cd mysql-4.0.27 # patch -p1 < ../senna/bindings/mysql/mysql-4.0.27.senna.diff # patch -p1 < ../senna/bindings/mysql/mysql-4.0.27.senna.2ind.diff # emacs myisam/mi_open.c << (内 350行目付近?)以下のように書き換える >> share->keyinfo[i].senna = sen_index_open(buf); ↓↓↓ share->keyinfo[i].senna = sen_index_create(buf, sizeof(my_off_t), SEN_INDEX_NORMALIZE|SEN_INDEX_SPLIT_ALPHA|SEN_INDEX_SPLIT_DIGIT| SEN_INDEX_SPLIT_SYMBOL|SEN_INDEX_NGRAM, 0, sen_enc_default); << ------------------------------------ >> # autoconf # automake # CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=all --with-charset=sjis --with-mysqld-user=mysql --with-senna --enable-thread-safe-client --enable-local-infile --enable-assembler --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-mysqld-user=mysql --localstatedir=/var/lib/mysql # make # make install ------------------------------------------------------------------------------------ インストールは正常(?)に終了しました。 その後、全文検索ができることを確認したあと、これまでに作成していたMysql のテーブルデータでカラムのcreate definition が blob だったものを text に 変更し全文検索ができるようにするため、以下のSQL文を実行したところ、 ------------------------------------------------------------------------------------- 【blob のカラム subject と body を text のカラムに変更する】 一時的にsubject,bodyのデータを保存するtext フィールドの一時カラム subject_temp,body_temp を作成 mysql > alter table hogehoge add subject_temp text, add body_temp text; データを一時的に保存 mysql > update hogehoge set subject_temp=subject, body_temp=body; subject,body カラムをdrop mysql > alter table hogehoge drop subject, drop body; subject,body カラムをtextフィールドとして再作成 mysql > alter table hogehoge add subject text, add body text, add fulltext index using ngram (subject,body); subject,body カラムにデータを注入 mysql > update hogehoge set subject=subject_temp, body=body_temp; ------------------------------------------------------------------------------------- 上記操作を終了後、正常に全文検索ができるのを確認したのですが、必要のなく なった一時カラム subject_temp, body_temp を以下のようにドロップすると 検索結果が何をやっても 0 になってしまいます。 また、インデックスの再生成なども行ってみたが状況は変わらず、困っておりま す。 以上、長文にて大変失礼いたします。 ご迷惑をおかけいたしますが、インストール作業やインデックス操作など至らな いところがあればご指摘願いたい次第です。 よろしくお願いいたします。