nekhbet / laravel-sphinxsearch
Laravel package to query SphinxSearch
Installs: 51
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 88
Type:laravel-package
Requires
- php: >=8.0
- ext-bcmath: *
- ext-mbstring: *
- illuminate/support: 4.2.*|5.*|^6.0|^7.0|^8.0|^9.0|^10.0
This package is auto-updated.
Last update: 2024-10-31 00:34:09 UTC
README
I'm using it for my personal projects, so it will be up-to-date.
What I have done:
- got rid of "strage" dependencies and included https://github.com/sphinxsearch/sphinx/blob/master/api/sphinxapi.php here, not on yet another repo
- tweaks for PHP 8.x
- make it work with Sphinx 3.x
- various fixes
==========================
To install it:
composer require nekhbet/sphinxsearch
Original notes below:
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.
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
Sngrl Sphinx Search is open-sourced software licensed under the MIT license