scorpio / sphinx-search-laravel
Requires
- php: >=7
- laravel/framework: ~5.2
- scorpio/sphinx-search: ~0.2
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 扩展
安装
-
首选方法是使用 composer 安装
composer require scorpio/sphinx-search-laravel "0.1.*"
-
在您的 config/app.php 中启用服务提供者
// config/app.php \Scorpio\SphinxSearchLaravel\SphinxSearchServiceProvider::class
-
./artisan vendor:publish
-
在 config/sphinx.php 中设置配置参数
-
并映射一些索引(见后文)
基本用法
此扩展公开以下配置
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 存储库页面 上提出。