![画像](https://lh3.googleusercontent.com/-8MNZcYv2KFk/AAAAAAAAAAI/AAAAAAAAANc/4eC04oZMqxw/photo.jpg)
はじめに
サイトの開発で直面する最も重要なタスクの1つは、全文検索の実装です。 人気のあるシンプルな実装の1つは、Sphinxの使用です。 habrには既に専用の記事がありますが、Query Builderライブラリーは当然のことながら言及されていません。 これは私が修正しようとするものです。
このテキストは、記事「SphinxQL Query Builder for PHP」の無料翻訳です。
使用する価値があるのはなぜですか?
- インデックスに対するSQLインジェクションのリスクを最小限に抑えます。
- クエリをより読みやすく、保守しやすくします。
- よりシンプルで柔軟なクエリを作成できます。
- Sphinx APIライブラリに実装されているすべての関数と、SphinxQLを操作するときに使用されるほとんどの関数があります。
- SphinxSearchとphpのいくつかのバージョンでテストされています。
インストール方法
Composerを使用している場合、次のコマンドでインストールできます。
$ composer install foolz/sphinxql-query-builder --save
または、githubリポジトリから複製します。
アプローチの比較
クエリビルダーを使用しない例:
<?php $conn = new mysqli('localhost', null, null, null, 9306); if ($conn->connect_error) { throw new Exception('Connection Error: ['.$conn->connect_errno.'] '.$conn->connect_error, $conn->connect_errno); } $resource = $conn->query('SELECT * FROM anime_index WHERE MATCH(\'@character Asuka\') AND age BETWEEN 12 AND 19'); $results = array(); while ($row = $resource->fetch_assoc()) { $results[] = $row; } $resource->free_result(); // , var_dump($results);
クエリビルダを使用したコードは次のとおりです。
<?php use Foolz\SphinxQL\Connection; use Foolz\SphinxQL\SphinxQL; $conn = new Connection(); $conn->setParams(array('host' => 'localhost', 'port' => 9306)); $query = SphinxQL::create($conn) ->select('*') ->from('anime_index') ->match('character', 'Asuka'); // , $query->where('age', 'between', array(12, 19)); // $result = $query->execute();
それほど明確で単純ではありませんか?
少しまとめると
MySQLiを使用してクエリを作成できますが、クエリビルダーを使用すると、より理解しやすく簡単にサポートできるクエリを作成できます。 上記の例はこれを非常に明確に示していると思います。 githubでライブラリの使用に関するその他の例とドキュメントを見つけることができます。