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

アーカイブの一覧に戻る

Tasuku SUENAGA a****@razil*****
2006年 9月 12日 (火) 18:51:56 JST


末永です。

> > 恐らく以下のURLで挙げられている現象と同じだと考えられます(英語ですが)
> > http://bugs.mysql.com/bug.php?id=20276
> > 
> > libtoolのバージョンをご確認ください。
> > 私が使っているのは1.5.22ですが、1.5系統であれば大丈夫だと思います。
> 私の使っている libtool のバージョンも 1.5.22 でした‥
libtoolの検出に失敗しているのかもしれません。
MySQLのインストール手順について、
どんなコマンドを実行したかを全て時系列順に教えていただけないでしょうか。

> > その代わり、MySQLのconfigure時に
> > --with-sennaとともに、--without-mecabを指定ください。
> --without-mecab オプションをつけてconfigureをおこなったところ以下のよう
> なエラーが発生いたし、実行がストップいたしました。
> 
> -----------------------------------------------------------------
>> checking for mecab_new... no
> configure: error: libmecab is required to enable Senna support
> -----------------------------------------------------------------
Senna 0.8.0までは上記のエラーが発生いたします。
お手数ですが、Senna 0.8.1をご利用ください。

Wikipedia英語データを用いてSennaのテストを行う
一連の操作をメモしたものを以下に示します。

Debian上での構築手順ではありますが、
N-gramのみ用いる場合の手順が全て書いてあると思います。

参考になれば幸いです。

----------------------
* testing Senna with Wikipedia data

1. Install autoconf/automake/bison/pkg-config/subversion and gcc/g++/libtool/make etc.
2. Get Senna source with subversion, configure, make, make install.
 > svn co http://svn.razil.jp/senna/trunk senna-svn
 > cd senna-svn
 > ./autogen.sh --prefix=/usr --without-mecab
 > make
 > sudo make install
 > cd ..
3. Install MySQL 5.0.24a with Senna
 > wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.24a.tar.gz/from/http://mirror.mysql-partners-jp.biz/
 > tar xvfz mysql-5.0.24a.tar.gz
 > cd mysql-5.0.24a
 > patch -p1 < ../senna-svn/bindings/mysql/mysql-5.0.24a.senna.diff
 > patch -p1 < ../senna-svn/bindings/mysql/mysql-5.0.24a.senna.2ind.diff
 > libtoolize -c -f
 > aclocal-1.9
 > autoheader
 > automake-1.9 -c -a -i
 > autoconf
 > touch sql/sql_yacc.yy
 > CFLAGS="-O3 -mcpu=i686 -I/usr/local/include" \
   CXX=gcc CXXFLAGS="-O3 -mcpu=i686 \
   -felide-constructors -fno-exceptions -fno-rtti" \
   ./configure \
   --with-senna \
   --without-mecab \
   --prefix=/usr \
   --enable-assembler \
   --with-charset=ujis --with-extra-charsets=complex \
   --enable-thread-safe-client \
   --with-big-tables \
   --with-named-curses-libs=/lib/libncurses.so.5 \
   --localstatedir=/var/lib/mysql \
   --with-readline
 > make
 > sudo make install
 > sudo cp -p ./support-files/my-medium.cnf /etc/my.cnf
 > sudo ./scripts/mysql_install_db
 > sudo chown -R mysql:mysql /var/lib/mysql
 > chmod +x ./support-files/mysql.server
 > sudo ./support-files/mysql.server start
 > cd ~
4. Import Wikipedia data
 > wget ftp://ftp.tietew.jp/pub/wikipedia/xml2sql-0.5.tar.gz
 > tar xvfz xml2sql-0.5.tar.gz
 > cd xml2sql-0.5
 > ./configure
 > make
 > sudo make install
 > cd ..

 > wget http://download.wikimedia.org/enwiki/20060816/enwiki-20060816-pages-articles.xml.bz2
 > bunzip2 -c enwiki-20060816-pages-articles.xml.bz2 | /usr/local/bin/xml2sql -v

 > echo "create database wikipedia_en" | mysql -u root
 > mysql -u root wikipedia_en
CREATE TABLE page (
 page_id int(8) unsigned NOT NULL auto_increment,
 page_namespace int NOT NULL,
 page_title varchar(255) binary NOT NULL,
 page_restrictions tinyblob NOT NULL default '',
 page_counter bigint(20) unsigned NOT NULL default '0',
 page_is_redirect tinyint(1) unsigned NOT NULL default '0',
 page_is_new tinyint(1) unsigned NOT NULL default '0',
 page_random real unsigned NOT NULL,
 page_touched char(14) binary NOT NULL default '',
 page_latest int(8) unsigned NOT NULL,
 page_len int(8) unsigned NOT NULL,
 PRIMARY KEY page_id (page_id)
) TYPE=MyISAM;
CREATE TABLE text (
 old_id int(8) unsigned NOT NULL auto_increment,
 old_text mediumtext NOT NULL default '',
 old_flags tinyblob NOT NULL default '',
 PRIMARY KEY old_id (old_id)
) TYPE=MyISAM;
CREATE TABLE revision (
 rev_id int(8) unsigned NOT NULL auto_increment,
 rev_page int(8) unsigned NOT NULL,
 rev_text_id int(8) unsigned NOT NULL,
 rev_comment tinyblob NOT NULL default '',
 rev_user int(5) unsigned NOT NULL default '0',
 rev_user_text varchar(255) binary NOT NULL default '',
 rev_timestamp char(14) binary NOT NULL default '',
 rev_minor_edit tinyint(1) unsigned NOT NULL default '0',
 rev_deleted tinyint(1) unsigned NOT NULL default '0',
 PRIMARY KEY rev_page_id (rev_page, rev_id),
 KEY rev_page (rev_page),
 KEY rev_text_id (rev_text_id)
) TYPE=MyISAM;
CREATE TABLE testtable (
 id int(8) unsigned NOT NULL,
 title varchar(255) NOT NULL,
 text  mediumtext NOT NULL,
 PRIMARY KEY id (id),
 FULLTEXT ft_title_text USING NGRAM (title,text)
) TYPE=MyISAM;
exit;
 > mysqlimport -u root wikipedia_en `pwd`/{page,text,revision}.txt
 > mysql -u root wikipedia_en
insert into testtable select a.page_id,a.page_title,c.old_text from page as a left join revision as b left join text as c on b.rev_text_id = c.old_id on a.page_id = b.rev_page;
drop table page;
drop table revision;
drop table text;
exit;

5. Senna test
 > mysql -u root wikipedia_en
select count(*) from testtable where match(title,text) against('test');
select count(*) from testtable where match(title,text) against('\"united states\"' in boolean mode);
drop index ft_title_text on testtable;
create fulltext index ft_title_text using NGRAM on testtable (title,text);
----------------------

-- 
末永 匡 <a****@razil*****>
(有)未来検索ブラジル http://razil.jp/




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