dariusiii/sphinxsearch

此包已被废弃,不再维护。未建议替代包。

Laravel 5 查询 Sphinxsearch 的 Laravel 包

v1.0.5 2018-02-07 13:05 UTC

This package is auto-updated.

Last update: 2022-06-06 05:14:56 UTC


README

一个简单的 Laravel 5 包,用于向 Sphinx Search 发送查询。灵感来源于 scalia/sphinxsearch Laravel 4 包。

此包创建的目的是导入到 packagist.org 网站,并允许通过 Composer 安装(https://getcomposer.org.cn/)。

安装

在您的 composer.json 中要求此包

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

在控制台中运行 composer update 命令以获取 Sphinx Search 的最新版本。

或者在控制台中直接运行以下命令

composer require dariusiii/sphinxsearch 

更新 composer 后,将 ServiceProvider 添加到 config/app.php 文件中的 "providers" 数组中

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

如果您使用的是 Laravel 5.5,则无需这样做,因为它会自动发现此包。

您可以将此行添加到您可能使用 SphinxSearch 的文件中

use dariusiii\SphinxSearch\SphinxSearch;

配置

要使用 Sphinx Search,您需要配置索引和它应该查询的模型。为此,请将配置发布到您的应用程序中。

php artisan vendor:publish

这将创建 config/sphinxsearch.php 文件。根据需要修改主机和端口,并配置索引,将它们绑定到一个表和 id 列。

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

或者禁用模型查询,仅获取结果 id 列表。

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

使用方法

基本查询(原始 Sphinx 结果)

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

基本查询(带有 Eloquent)

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

使用限制和过滤器查询另一个 Sphinx 索引。

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

指定匹配和排序类型进行查询。

$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

许可

DariusIII Sphinx Search 是开源软件,使用 MIT 许可证授权