Need help with sphinxsearch?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

sngrl
126 Stars 77 Forks MIT License 44 Commits 21 Opened issues

Description

Sphinx Search for Laravel 5

Services available

!
?

Need anything else?

Contributors list

# 182,576
PHP
HTML
laravel...
Laravel
12 commits
# 496,996
PHP
6 commits
# 513,240
PHP
5 commits
# 584,683
PHP
2 commits
# 123,388
PHP
wechat
PHPUnit
Laravel
1 commit
# 641,587
PHP
1 commit

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 ***/
        "sngrl/sphinxsearch": "dev-master",
    },

Run in your console

composer update
command to pull down the latest version of Sphinx Search.

Or just run this in console:

composer require sngrl/sphinxsearch:dev-master

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

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

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

use sngrl\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 --provider=sngrl\SphinxSearch\SphinxSearchServiceProvider --force

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.

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

Usage

Basic query (raw sphinx results)

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

Basic query (with Eloquent)

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

Query another Sphinx index with limit and filters.

php
$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.

php
$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

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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.