Одна из самых важных задач стоящих при разработке сайта, это реализация полнотекстового поиска. Один из популярных и простых вариантов реализации, это использование Sphinx. На хабре уже есть посвящённые ему статьи, но не заслуженно не упомянута библиотека Query Builder. Это я и постараюсь исправить.

Одна из самых важных задач стоящих при разработке сайта, это реализация полнотекстового поиска. Один из популярных и простых вариантов реализации, это использование Sphinx. На хабре уже есть посвящённые ему статьи, но не заслуженно не упомянута библиотека Query Builder. Это я и постараюсь исправить.
Данный текст является вольным переводом статьи «SphinxQL Query Builder for PHP».
Если вы используете Composer, то вы можете установить его следующей командой:
Или клонировать его из гитхаб репозитория.
Пример без использования Query Builder:
А вот и кусок кода с использованием Query Builder:
Не правда ли гораздо нагляднее и проще?
Хоть мы и можем писать запросы используя MySQLi, но Query Builder позволяет писать более понятные и легко поддерживаемые запросы. Я думаю пример указанный выше очень наглядно это показывает. Больше примеров и документация по использованию библиотеки, вы можете найти на гитхабе.

Введение
Одна из самых важных задач стоящих при разработке сайта, это реализация полнотекстового поиска. Один из популярных и простых вариантов реализации, это использование Sphinx. На хабре уже есть посвящённые ему статьи, но не заслуженно не упомянута библиотека Query Builder. Это я и постараюсь исправить.
Данный текст является вольным переводом статьи «SphinxQL Query Builder for PHP».
Почему его стоит использовать?
- Минимизируем риски от возможных sql инъекции против ваших индексов;
- Делает ваши запросы более читабельными и легче поддерживаемыми;
- Позволяет создавать более простые и гибкие запросы;
- Он имеет все функции реализованные в билиотеке Sphinx API и большинство функций используемых при работе с SphinxQL;
- Он был протестирован в нескольких версиях SphinxSearch и php.
Как установить?
Если вы используете Composer, то вы можете установить его следующей командой:
$ composer install foolz/sphinxql-query-builder --save
Или клонировать его из гитхаб репозитория.
Сравнение подходов
Пример без использования Query Builder:
<?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);
А вот и кусок кода с использованием Query Builder:
<?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, но Query Builder позволяет писать более понятные и легко поддерживаемые запросы. Я думаю пример указанный выше очень наглядно это показывает. Больше примеров и документация по использованию библиотеки, вы можете найти на гитхабе.
