scorpio/sphinx-search-laravel

此包已被废弃,不再维护。作者建议使用 foolz/sphinxql-query-builder 包。

Sphinx 搜索容器绑定/配置用于 Laravel

0.2.0 2017-09-02 19:44 UTC

This package is auto-updated.

Last update: 2022-02-01 12:53:16 UTC


README

此项目不再维护。请切换到 foolz/sphinxql-query-builder。

Scorpio SphinxSearchBundle

SphinxSearchBundle 为 Scorpio SphinxSearch 添加配置和服务支持,使其在 Laravel 项目中更容易使用。

要求

  • Laravel 5.2+
  • Scorpio SphinxSearch
  • composer 安装需要 PHP Sphinx 扩展

安装

  1. 首选方法是使用 composer 安装

    composer require scorpio/sphinx-search-laravel "0.1.*"

  2. 在您的 config/app.php 中启用服务提供者

    // config/app.php \Scorpio\SphinxSearchLaravel\SphinxSearchServiceProvider::class

  3. ./artisan vendor:publish

  4. 在 config/sphinx.php 中设置配置参数

  5. 并映射一些索引(见后文)

基本用法

此扩展公开以下配置

host: localhost
port: 9312
max_query_time: 5000 # max query execution time

可以指定特定的 SphinxClient 类来处理连接。如果 PHP 扩展不可用且无法使用 SphinxQL 库,则可以使用此功能。

client_class: SomeClass\That\Implements\SphinxClientAPI::class

以下服务将自动注册

  • scorpio_sphinx_search.server.settings (服务器设置)
  • scorpio_sphinx_search.search_manager (主要搜索管理器实例)

索引可以在配置文件中定义,并将作为服务发布

'indexes' => [
    'my_custom_sphinx_index' => [
        'class'     => \Scorpio\SphinxSearch\SearchIndex::class,
        'arguments' => [
            'index'        => 'my_custom_sphinx_index',
            'fields'       => [ 'available', 'fields', 'as_an_array' ],
            'attributes'   => [ 'attribute1', 'attribute2' ],
        ],
    ],
],

注意:索引名称和字段是必需的,并且必须与 Sphinx 配置中公开的内容匹配。

此外,还可以指定结果集和结果记录类

'indexes' => [
    'my_custom_sphinx_index' => [
        'class'     => \Scorpio\SphinxSearch\SearchIndex::class,
        'arguments' => [
            'index'        => 'my_custom_sphinx_index',
            'fields'       => [ 'available', 'fields', 'as_an_array' ],
            'attributes'   => [ 'attribute1', 'attribute2' ],
            'result_set'   => MyResultSet::class,
            'result_class' => MyCustomResult::class,
        ],
    ],
],

最后,对于真正的懒人,索引可以添加一个 'query' 元素

'indexes' => [
    'my_custom_sphinx_index' => [
        'class'     => \Scorpio\SphinxSearch\SearchIndex::class,
        'query'     => true,
        'arguments' => [
            'index'        => 'my_custom_sphinx_index',
            'fields'       => [ 'available', 'fields', 'as_an_array' ],
            'attributes'   => [ 'attribute1', 'attribute2' ],
        ],
    ],
],

将自动在容器中注册自定义查询服务。前缀可以在您的配置文件中自定义,默认为 "query.",因此上一个示例将创建服务:"query.my_custom_sphinx_index"。

注意:必须设置 "query" 属性为 true,否则将忽略索引。这允许服务被标记和定位以进行调试,但在不需要时不会自动创建查询服务。

然后您可以在控制器中访问查询实例

class MyController extends Controller
{

    function indexAction(Request $request)
    {
        // bind a search term somehow, apply filters etc. maybe check for keywords...
        $query = app('query.my_custom_sphinx_index')
            ->setQuery($request->query->get('keywords'));

        $results = app('scorpio_sphinx_search.search_manager')->query($query);

        // do something with the results.
    }
}

对于 Laravel,建议为每个索引创建自定义 SearchIndex 类,并使用类名来命名它们。然后它们可以作为依赖项注入。

许可证

此库采用 BSD 许可证。请参阅包含的 LICENSE 文件中的完整许可证。

问题或功能请求

问题和功能请求应在 Github 存储库页面 上提出。