Skip to content
This repository has been archived by the owner on May 10, 2022. It is now read-only.

Latest commit

 

History

History
121 lines (93 loc) · 2.84 KB

readme.md

File metadata and controls

121 lines (93 loc) · 2.84 KB

Sphinx Search for Laravel 5 - Custom build with snippets support

Simple Laravel 5 package for make queries to Sphinx Search. Inspired by scalia/sphinxsearch package for Laravel 4.

This package was created to import to the site packagist.org and allow installation through Composer (https://getcomposer.org/).

Installation

Require this package in your composer.json:

	"require": {
        /*** Some others packages ***/
		"dariusiii/sphinxsearch": "^1.0",
	},

Run in your console composer update command to pull down the latest version of Sphinx Search.

Or just run this in console:

composer require dariusiii/sphinxsearch 

After updating composer, add the ServiceProvider to the "providers" array in config/app.php:

	'providers' => array(
        /*** Some others providers ***/
        dariusiii\SphinxSearch\SphinxSearchServiceProvider::class,
    ),

No need to do this if you are using Laravel 5.5 as it will autodiscover this package.

You can add this line to the files, where you may use SphinxSearch:

use dariusiii\SphinxSearch\SphinxSearch;

Configuration

To use Sphinx Search, you need to configure your indexes and what model it should query. To do so, publish the configuration into your app.

php artisan vendor:publish

This will create the file config/sphinxsearch.php. Modify as needed the host and port, and configure the indexes, binding them to a table and id column.

return array (
	'host'    => '127.0.0.1',
	'port'    => 9312,
	'indexes' => array (
		'my_index_name' => array ( 'table' => 'my_keywords_table', 'column' => 'id' ),
	)
);

Or disable the model querying to just get a list of result id's.

return array (
	'host'    => '127.0.0.1',
	'port'    => 9312,
	'indexes' => array (
		'my_index_name' => FALSE,
	)
);

Usage

Basic query (raw sphinx results)

$sphinx = new SphinxSearch();
$results = $sphinx->search('my query', 'index_name')->query();

Basic query (with Eloquent)

$results = $sphinx->search('my query', 'index_name')->get();

Query another Sphinx index with limit and filters.

$results = $sphinx->search('my query', 'index_name')
	->limit(30)
	->filter('attribute', array(1, 2))
	->range('int_attribute', 1, 10)
	->get();

Query with match and sort type specified.

$result = $sphinx->search('my query', 'index_name')
	->setFieldWeights(
		array(
			'partno'  => 10,
			'name'    => 8,
			'details' => 1
		)
	)
	->setMatchMode(\Sphinx\SphinxClient::SPH_MATCH_EXTENDED)
	->setSortMode(\Sphinx\SphinxClient::SPH_SORT_EXTENDED, "@weight DESC")
	->get(true);  //passing true causes get() to respect returned sort order

License

DariusIII Sphinx Search is open-sourced software licensed under the MIT license