[Senna-dev 303] N-gramインデックスによるsennaのインストールについて

アーカイブの一覧に戻る

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 になってしまいます。

また、インデックスの再生成なども行ってみたが状況は変わらず、困っておりま
す。



以上、長文にて大変失礼いたします。
ご迷惑をおかけいたしますが、インストール作業やインデックス操作など至らな
いところがあればご指摘願いたい次第です。
よろしくお願いいたします。






Senna-dev メーリングリストの案内
アーカイブの一覧に戻る