nekhbet / laravel-sphinxsearch
Laravel SphinxSearch 查询包
v1.0.1
2023-04-28 19:47 UTC
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-08-31 00:49:13 UTC
README
我在个人项目中使用它,所以它会保持最新。
我所做的工作
- 移除了 "strage" 依赖,并将 https://github.com/sphinxsearch/sphinx/blob/master/api/sphinxapi.php 包含在这里,而不是另一个仓库中
- 对 PHP 8.x 的调整
- 使其与 Sphinx 3.x 兼容
- 各种修复
==========================
安装它
composer require nekhbet/sphinxsearch
以下为原始说明
Laravel 5 的 Sphinx 搜索 - 带有片段支持的定制构建
为 Laravel 5 创建的简单包,用于向 Sphinx 搜索执行查询。受 scalia/sphinxsearch 为 Laravel 4 的包的启发。
创建此包是为了导入到 site packagist.org,并通过 Composer (https://composer.php.ac.cn/) 进行安装。
安装
在 composer.json 中要求此包
"require": { /*** Some others packages ***/ "sngrl/sphinxsearch": "dev-master", },
在控制台运行 composer update 命令以获取 Sphinx Search 的最新版本。
或者在控制台直接运行此命令
composer require sngrl/sphinxsearch:dev-master
更新 composer 后,将 ServiceProvider 添加到 config/app.php 中的 "providers" 数组中
'providers' => array( /*** Some others providers ***/ sngrl\SphinxSearch\SphinxSearchServiceProvider::class, ),
您可以将此行添加到可能使用 SphinxSearch 的文件中
use sngrl\SphinxSearch\SphinxSearch;
配置
要使用 Sphinx 搜索,您需要配置索引和它应该查询的模型。为此,将配置发布到您的应用中。
php artisan vendor:publish --provider=sngrl\SphinxSearch\SphinxSearchServiceProvider --force
这将创建 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
许可证
Sngrl Sphinx Search 是开源软件,许可协议为 MIT 许可证