ink/ink-sphinxize

Laravel 4 的 Sphinx 搜索 - InkSphinxize

dev-master 2013-10-19 14:55 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:51:11 UTC


README

Laravel 4 的 Sphinx 搜索 - InkSphinxize

安装

首先,您需要将此包添加到您的 composer.json 文件的 require 属性中

{
    "require": {
        "ink/ink-sphinxize": "dev-master"
    },
}

然后,从您的命令行运行 composer update

接下来,将 'Ink\InkSphinxize\InkSphinxizeServiceProvider', 添加到 app/config/app.php 文件中的服务提供者列表,并将 'InkSphinxizeSearch' => 'Ink\InkSphinxize\Facades\InkSphinxize', 添加到 app/config/app.php 文件中的类别名列表。

再次从命令行运行 php artisan config:publish ink/ink-sphinxize

更新您的模型

定义一个私有静态属性 $sphinxize,包含定义

class Post extends Eloquent
{
	
	use Ink\InkSphinxize\InkSphinxize;

	/**
	 * The database table used by the model.
	 *
	 * @var string
	 */
	protected $table = 'posts';
        	
	/**
	 * InkSphinxize configs
	 *
	 * @var array
	 */
	private static $sphinxize = [
		'index'   => 'posts',
		'pk'      => 'id',
		'perPage' => 15,
	];

}

就这样!

示例


Route::get('/', function()
{
	$perPage = 5; // Override $sphinxize perPage value
	
	$ids = Post::ss('Azerbaijan')
			->ids()
			->skip(5)
			->take($perPage)
			->get();
	// Returns [2, 34, 66, 98, 103, ...]
	
	$records = Post::ss('Azerbaijan')
				->limit(0, $perPage)
				->get();
	// Returns \Illuminate\Database\Eloquent\Collection
	
	$records = Post::ss('Azerbaijan')
				->limit(0, $perPage)
				->with('category')
				->get();
	// Returns \Illuminate\Database\Eloquent\Collection with Eager loading
	
	$records = Post::ss('Azerbaijan')
				->with(array('category', 'tags' => function($query){
					$query->where('name', 'like', '%baku%');
				}))
				->paginate($perPage);
	// Returns \Illuminate\Database\Eloquent\Collection with Eager loading
	
	$paginator = Paginator::make($records->toArray(), count($records->toArray()), $perPage);
	// Paginator
				
	dd($records);
});

错误和建议

请使用 Github 报告错误、评论和建议。我们更倾向于接收 Pull requests!

版权和许可

InkSphinxize 由 Orkhan Maharramli 编写,并使用 MIT 许可证发布。有关详细信息,请参阅 LICENSE 文件。

版权 2013 Orkhan Maharramli