先日、Debian GNU/Linux に Tritonn をインストールしてみたよやDebian GNU/Linux etch の PHP で Tritonn に接続するで Tritonn のインストールをお伝えしてきましたが、どうにも PHP がセグメンテーション違反を起こし、それがもうどうにもさっぱりなので気を取り直して Tritonn のインストール場所を Debian のパッケージにあわせてインストールしなおしてみました。
$ wget http://jaist.dl.sourceforge.jp/tritonn/28541/mysql-5.0.51-tritonn-1.0.8-linux-i686.tar.gz $ tar zxvf mysql-5.0.51-tritonn-1.0.8-linux-i686.tar.gz $ sudo mv mysql-5.0.51-tritonn-1.0.8-linux-i686 /var/lib/mysql $ sudo groupadd mysql $ sudo useradd -g mysql mysql $ cd /var/lib/mysql $ sudo chown -R root:root . $ sudo chown -R mysql:root data $ sudo scripts/mysql_install_db -umysql $ sudo cp support-files/mysql.server /etc/init.d/mysql $ sudo cp /var/lib/mysql/support-files/my-small.cnf /etc/my.cnf $ sudo vim /etc/my.cnf [client] socket = /var/run/mysqld/mysqld.sock [mysqld] socket = /var/run/mysqld/mysqld.sock basedir = /var/lib/mysql $ sudo mkdir /var/run/mysqld $ sudo chown mysql /var/run/mysqld $ sudo update-rc.d mysql defaults $ sudo ln -s /usr/include/mysql /var/lib/mysql/include $ sudo cp -r /var/lib/mysql/lib/* /usr/lib
こんな感じで Apache と MySQL を再起動すると正常に動作しました。
ためしに「郵便番号と住所の対応表を「郵便番号データダウンロード – 日本郵便」からダウンロードして以下の様なテーブルを作って、そこに郵便データを登録するスクリプト」を作ってデータベースにガシガシ登録して全文検索を試してみました。
CREATE TABLE `zipcode` ( `zipcode` varchar(7) default NULL, `prefecture_kana` varchar(36) default NULL, `city_kana` varchar(255) default NULL, `town_kana` varchar(255) default NULL, `prefecture` varchar(24) default NULL, `city` varchar(255) default NULL, `town` varchar(255) default NULL, FULLTEXT INDEX USING NGRAM, SECTIONALIZE (`zipcode`,`prefecture_kana`,`city_kana`,`town_kana`,`prefecture`,`city`,`town`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
カラムはそれぞれ
- zipcode
- 郵便番号
- prefecture_kana
- 都道府県(ひらがな)
- city_kana
- 市区町村(ひらがな)
- town_kana
- 町域
- prefecture
- 都道府県
- city
- 市区町村
- town
- 町域
と言う感じです。
ためしに以下の以下のスクリプトを実行してみると
$DB = new PDO('mysql:host=localhost;dbname=test_db', 'test_user', '******'); $q = $DB->query( "SELECT * FROM `zipcode` WHERE MATCH(`zipcode`, `prefecture_kana`, ". "`city_kana`, `town_kana`, `prefecture`, `city`, `town`) ". "AGAINST('*W1, 2, 3, 4, 5, 6, 7 かわさき' IN BOOLEAN MODE) LIMIT 0, 10"); $r = $q->fetchAll(PDO::FETCH_ASSOC); var_dump($r);
きちんと結果が返ってきました。
array(10) {
[0]=>
array(7) {
["zipcode"]=>
string(7) "0280051"
["prefecture_kana"]=>
string(15) "いわてけん"
["city_kana"]=>
string(9) "くじし"
["town_kana"]=>
string(21) "かわさきちょう"
["prefecture"]=>
string(9) "岩手県"
["city"]=>
string(9) "久慈市"
["town"]=>
string(9) "川崎町"
}
[1]=>
array(7) {
["zipcode"]=>
string(7) "9391553"
["prefecture_kana"]=>
string(15) "とやまけん"
["city_kana"]=>
string(12) "なんとし"
["town_kana"]=>
string(18) "かみかわさき"
["prefecture"]=>
string(9) "富山県"
["city"]=>
string(9) "南砺市"
["town"]=>
string(9) "上川崎"
}
[2]=>
array(7) {
["zipcode"]=>
string(7) "9130025"
["prefecture_kana"]=>
string(15) "ふくいけん"
["city_kana"]=>
string(12) "さかいし"
["town_kana"]=>
string(30) "みくにちょうかわさき"
["prefecture"]=>
string(9) "福井県"
["city"]=>
string(9) "坂井市"
["town"]=>
string(15) "三国町川崎"
}
[3]=>
array(7) {
["zipcode"]=>
string(7) "8720731"
["prefecture_kana"]=>
string(18) "おおいたけん"
["city_kana"]=>
string(9) "うさし"
["town_kana"]=>
string(27) "あじむまちかわさき"
["prefecture"]=>
string(9) "大分県"
["city"]=>
string(9) "宇佐市"
["town"]=>
string(18) "安心院町川崎"
}
[4]=>
array(7) {
["zipcode"]=>
string(7) "9690401"
["prefecture_kana"]=>
string(18) "ふくしまけん"
["city_kana"]=>
string(36) "いわせぐんかがみいしまち"
["town_kana"]=>
string(18) "かわさきまち"
["prefecture"]=>
string(9) "福島県"
["city"]=>
string(18) "岩瀬郡鏡石町"
["town"]=>
string(9) "川崎町"
}
[5]=>
array(7) {
["zipcode"]=>
string(7) "9170081"
["prefecture_kana"]=>
string(15) "ふくいけん"
["city_kana"]=>
string(12) "おばまし"
["town_kana"]=>
string(12) "かわさき"
["prefecture"]=>
string(9) "福井県"
["city"]=>
string(9) "小浜市"
["town"]=>
string(6) "川崎"
}
[6]=>
array(7) {
["zipcode"]=>
string(7) "2050021"
["prefecture_kana"]=>
string(18) "とうきょうと"
["city_kana"]=>
string(12) "はむらし"
["town_kana"]=>
string(12) "かわさき"
["prefecture"]=>
string(9) "東京都"
["city"]=>
string(9) "羽村市"
["town"]=>
string(6) "川崎"
}
[7]=>
array(7) {
["zipcode"]=>
string(7) "2891331"
["prefecture_kana"]=>
string(12) "ちばけん"
["city_kana"]=>
string(12) "さんむし"
["town_kana"]=>
string(12) "かわさき"
["prefecture"]=>
string(9) "千葉県"
["city"]=>
string(9) "山武市"
["town"]=>
string(6) "川崎"
}
[8]=>
array(7) {
["zipcode"]=>
string(7) "8270000"
["prefecture_kana"]=>
string(18) "ふくおかけん"
["city_kana"]=>
string(33) "たがわぐんかわさきまち"
["town_kana"]=>
string(0) ""
["prefecture"]=>
string(9) "福岡県"
["city"]=>
string(18) "田川郡川崎町"
["town"]=>
string(0) ""
}
[9]=>
array(7) {
["zipcode"]=>
string(7) "8270001"
["prefecture_kana"]=>
string(18) "ふくおかけん"
["city_kana"]=>
string(33) "たがわぐんかわさきまち"
["town_kana"]=>
string(9) "あまぎ"
["prefecture"]=>
string(9) "福岡県"
["city"]=>
string(18) "田川郡川崎町"
["town"]=>
string(9) "安眞木"
}
}Senna はよく知らないのでこれからお勉強です。
コメント:1
- rti 2008 年 9 月 20 日
大変参考になりました。ありがとうございます。
一時期、senna入れるの面倒だから、debianの道を捨てようかと思っていましたが、これで続けることができます。
トラックバック:0
- この記事のトラックバック URL
- http://spais.jp/php/debian-gnulinux-%e3%81%ab-tritonn-%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%97%e3%81%aa%e3%81%8a%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f%e3%82%88/2008-01-12/trackback
- トラックバックの送信元リスト
- Debian GNU/Linux etch に Tritonn をインストールしなおしてみたよ - SPaiS より