ホーム > Debian | Memo | MySQL | PHP | Tritonn > Debian GNU/Linux etch に Tritonn をインストールしなおしてみたよ

Debian GNU/Linux etch に Tritonn をインストールしなおしてみたよ

先日、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
町域

と言う感じです。

ためしに以下の以下のスクリプトを実行してみると

<?php
$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 より

ホーム > Debian | Memo | MySQL | PHP | Tritonn > Debian GNU/Linux etch に Tritonn をインストールしなおしてみたよ

カテゴリー

ページの上部に戻る