前回の続き。
今回は、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にも挙げておいたので、よければ是非。