You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Qiang Xue 9b1c2c8064 Fixes #1586: `QueryBuilder::buildLikeCondition()` will now escape special characters and use percentage characters by default 11 years ago
..
ActiveQuery.php moved extensions under yii. 11 years ago
ActiveRecord.php Fixes #1579: throw exception when the given AR relation name does not match in a case sensitive manner. 11 years ago
ActiveRelation.php Sphinx Active Relation lazy load fixed. 11 years ago
CHANGELOG.md added CHANGELOGs for all the extensions 11 years ago
ColumnSchema.php moved extensions under yii. 11 years ago
Command.php fix sphinx command signature 11 years ago
Connection.php moved extensions under yii. 11 years ago
IndexSchema.php moved extensions under yii. 11 years ago
LICENSE.md moved extensions under yii. 11 years ago
Query.php Fixes #1586: `QueryBuilder::buildLikeCondition()` will now escape special characters and use percentage characters by default 11 years ago
QueryBuilder.php Fixes #1586: `QueryBuilder::buildLikeCondition()` will now escape special characters and use percentage characters by default 11 years ago
README.md moved extensions under yii. 11 years ago
Schema.php moved extensions under yii. 11 years ago
composer.json moved extensions under yii. 11 years ago

README.md

Sphinx Extension for Yii 2

This extension adds Sphinx full text search engine extension for the Yii 2 framework.

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require yiisoft/yii2-sphinx "*"

or add

"yiisoft/yii2-sphinx": "*"

to the require section of your composer.json.

Usage & Documentation

This extension interacts with Sphinx search daemon using MySQL protocol and SphinxQL query language. In order to setup Sphinx "searchd" to support MySQL protocol following configuration should be added:

searchd
{
	listen = localhost:9306:mysql41
	...
}

This extension supports all Sphinx features including Runtime Indexes. Since this extension uses MySQL protocol to access Sphinx, it shares base approach and much code from the regular "yii\db" package.

To use this extension, simply add the following code in your application configuration:

return [
	//....
	'components' => [
		'sphinx' => [
			'class' => 'yii\sphinx\Connection',
			'dsn' => 'mysql:host=127.0.0.1;port=9306;',
			'username' => '',
			'password' => '',
		],
	],
];

This extension provides ActiveRecord solution similar ot the \yii\db\ActiveRecord. To declare an ActiveRecord class you need to extend \yii\sphinx\ActiveRecord and implement the indexName method:

use yii\sphinx\ActiveRecord;

class Article extends ActiveRecord
{
	/**
	 * @return string the name of the index associated with this ActiveRecord class.
	 */
	public static function indexName()
	{
		return 'idx_article';
	}
}

You can use \yii\data\ActiveDataProvider with the \yii\sphinx\Query and \yii\sphinx\ActiveQuery:

use yii\data\ActiveDataProvider;
use yii\sphinx\Query;

$query = new Query;
$query->from('yii2_test_article_index')->match('development');
$provider = new ActiveDataProvider([
	'query' => $query,
	'pagination' => [
		'pageSize' => 10,
	]
]);
$models = $provider->getModels();
use yii\data\ActiveDataProvider;
use app\models\Article;

$provider = new ActiveDataProvider([
	'query' => Article::find(),
	'pagination' => [
		'pageSize' => 10,
	]
]);
$models = $provider->getModels();