CakePHP + Hyper Estraierで全文検索 – Datasourceを作ってみた

前回の続き。
今回は、CakePHP+HyperEstraierで全文検索を実装。
せっかくのCakeなので、HyperEstraierとのつなぎ込みの部分をDatasourceで実現してみる。

1. CakePHPのダウンロード

2012-10-18現在の最新版(2.2.1)をダウンロード
http://github.com/cakephp/cakephp/zipball/2.2.2

2. Services_HyperEstraierのインストール

PHPからデータを取得する方法はいくつかあるらしいが、今回はServices_HyperEstraierを利用する。
gitからダウンロード

3. ダウンロードしたライブラリをCakePHPのLib内に設置

今回の方針としては、2.でダウンロードしたライブラリを自作のdatasource内から呼び出して利用してみる。
という事で、とりあえず/app/Lib以下にダウンロードしてきたServicesディレクトリ以下を設置。

4.自作のDatasourceを設置

ソースは結構長いので、こっちを見てください。
要点だけ抜き出すと、connect()でhyperestraierへのアクセスを確立させる。read()でデータを取ってくるって感じです。

5.database.phpに接続の追加

新しいDatasourceへの接続を追加する。

public $he = array(
'datasource' => 'Hyperestraier',
'host'  => 'localhost',
'port'  => 1978,
'node'  => 'nodename',
'login' => 'admin',
'password' => 'admin',
);

※今のところ、loginとpasswordは利用していないので、記述しなくても大丈夫。

6.モデルを作成

とりあえずこれだけで動く。

class Search extends AppModel {
     public $name    = 'Search';
     public $useDbConfig = 'he';
}

ここまでくると、後は通常のモデルと同じように利用できる。
ソースをgithubにも挙げておいたので、よければ是非。

cakephp.datasource.hyperestraier – github