PHPackages                             sergebezborodov/sphinx-yii - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. sergebezborodov/sphinx-yii

ActiveLibrary[Search &amp; Filtering](/categories/search)

sergebezborodov/sphinx-yii
==========================

Extension for work with Sphinx Search.

0.1(12y ago)181397[1 issues](https://github.com/sergebezborodov/sphinx-yii/issues)PHP

Since Sep 9Pushed 12y ago7 watchersCompare

[ Source](https://github.com/sergebezborodov/sphinx-yii)[ Packagist](https://packagist.org/packages/sergebezborodov/sphinx-yii)[ RSS](/packages/sergebezborodov-sphinx-yii/feed)WikiDiscussions master Synced 4d ago

READMEChangelog (1)DependenciesVersions (2)Used By (0)

Yii Sphinx Component
====================

[](#yii-sphinx-component)

Simple and powerful component for work with Sphinx search engine.

This is a beta version, please help with testing and bug reports. You can find old stable version at "releases" page.

Features
--------

[](#features)

- Simple query methods
- Extended ESphinxSearchCriteria for complex queries
- Support connection by Sphinx API and Sphinx QL
- Support packeted queries for both connections
- Unit tests coverage

How to install
--------------

[](#how-to-install)

\###1. via composer

```
"repositories": [
   {
    "type": "vcs",
    "url": "https://github.com/sergebezborodov/sphinx-yii"
   }
],
"require": {
    "sergebezborodov/sphinx-yii": "dev-master"
}
```

in config (assumes you have 'vendor' alias to composer directory):

```
'components' => array(
    'sphinx' => array(
        'class' => 'vendor.sergebezborodov.sphinx-yii.ESphinxApiConnection', // sphinx api mode
        //'class' => 'vendor.sergebezborodov.sphinx-yii.ESphinxMysqlConnection', for sphinx ql mode
        'server' => array('localhost', 3386),
        'connectionTimeout' => 3, // optional, default 0 - no limit
        'queryTimeout'      => 5, // optional, default 0 - no limit
    ),
),
```

\###2. old school way

Download and extract source in protected/extensions folder. In config add:

```
'import' => array(
    // i hope remove this in new versions
    'ext.sphinx.*',
    'ext.sphinx.ql.*',
    'ext.sphinx.enums.*',
),

'components' => array(
    'sphinx' => array(
        'class' => 'ext.sphinx.ESphinxApiConnection', // sphinx api mode
        //'class' => 'ext.sphinx.ESphinxMysqlConnection', for sphinx ql mode
        'server' => array('localhost', 3386),
        'connectionTimeout' => 3, // optional, default 0 - no limit
        'queryTimeout'      => 5, // optional, default 0 - no limit
    ),
),
```

How to use
----------

[](#how-to-use)

All component classes names begins with ESphinx. Main object we used for querying is ESphinxQuery.

Query in index:

```
Yii::app()->sphinx->executeQuery(new ESphinxQuery('Hello world!'), 'blog');
```

Extended queries
----------------

[](#extended-queries)

Often we need search in index with some parametrs and options. For this task component has class ESphinxSearchCriteria. It's very similar to CDbCriteria and has the same idea.

Search in article index with some parametrs:

```
$criteria = new ESphinxSearchCriteria(array(
    'sortMode' => ESphinxSort::EXTENDED,
    'orders' => array(
        'date_created' => 'DESC',
        'date_updated' => 'ASC',
    ),
    'mathMode' => ESphinxMatch::EXTENDED,
));

$query = new ESphinxQuery('@(title,body) hello world', 'articles', $criteria);
```

Criteria can changing at work.

```
$criteria = new ESphinxSearchCriteria(array('mathMode' => ESphinxMatch::EXTENDED));
$criteria->addFilter('user_id', 1000); // add filter by user, we can use integer or integer array
$criteria->addFilter('site_id', 123, false, 'site'); // add filter by site_id field with key value (will used later)

// querying
$result = Yii::app()->sphinx->executeQuery(new ESphinxQuery('', 'products', $criteria));

// search same query by another site
$criteria->addFilter('site_id', 321, false, 'site'); // change site_id param value

// querying
$result = Yii::app()->sphinx->executeQuery(new ESphinxQuery('', 'products', $criteria));

// search same query but without site_id param
$criteria->deleteFilter('site'); // delete filter on site_id field

// querying....
```

Multi queries
-------------

[](#multi-queries)

One of the powerfull sphinx features is multi queries (packet queries). When you send two or more queries sphinx does internal optimisation for faster work.

```
$query1 = new ESphinxQuery('', 'products', array('filters' => array(array('site_id', 123))));
$query2 = new ESphinxQuery('', 'products', array('filters' => array(array('site_id', 321))));

$results = Yii::app()->sphinx->executeQueries(array($query1, $query2));
```

Another way to add queries:

```
$query = new ESphinxQuery('', 'products', array('filters' => array(array('site_id', 123, 'key' => 'site_id')))));
Yii::app()->sphinx->addQuery($query);

// change previous site_id filter value
$query->criteria->addFilter('site_id', 321, false, 'site_id');

$results = Yii::app()->sphinx->runQueries();
```

Options
-------

[](#options)

\####Versions ESphinxSearchCriteria includes all possible options of last sphinx beta. Be sure you are using right functions for your version.

\####Sort Methods For SPH\_SORT\_EXTENDED (ESphinxSort::EXTENDED) you should use setOrders() or addOrder() method. For others sort modes use setSortBy() for one field.

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 93.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

4632d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1086402?v=4)[Serge Bezborodov](/maintainers/sergebezborodov)[@sergebezborodov](https://github.com/sergebezborodov)

---

Top Contributors

[![sergebezborodov](https://avatars.githubusercontent.com/u/1086402?v=4)](https://github.com/sergebezborodov "sergebezborodov (70 commits)")[![nizsheanez](https://avatars.githubusercontent.com/u/686798?v=4)](https://github.com/nizsheanez "nizsheanez (5 commits)")

### Embed Badge

![Health badge](/badges/sergebezborodov-sphinx-yii/health.svg)

```
[![Health](https://phpackages.com/badges/sergebezborodov-sphinx-yii/health.svg)](https://phpackages.com/packages/sergebezborodov-sphinx-yii)
```

###  Alternatives

[ruflin/elastica

Elasticsearch Client

2.3k50.4M203](/packages/ruflin-elastica)[opensearch-project/opensearch-php

PHP Client for OpenSearch

15024.3M65](/packages/opensearch-project-opensearch-php)[mailerlite/laravel-elasticsearch

An easy way to use the official PHP ElasticSearch client in your Laravel applications.

934529.3k2](/packages/mailerlite-laravel-elasticsearch)[massive/search-bundle

Massive Search Bundle

721.4M13](/packages/massive-search-bundle)[shyim/opensearch-php-dsl

OpenSearch/Elasticsearch DSL library

175.9M9](/packages/shyim-opensearch-php-dsl)[outl1ne/nova-multiselect-filter

Multiselect filter for Laravel Nova.

45802.7k3](/packages/outl1ne-nova-multiselect-filter)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
