scorpio/sphinx-search

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

一组封装 SphinxClient 扩展的类,以面向对象的方式。

0.3.0 2017-09-02 19:29 UTC

This package is auto-updated.

Last update: 2022-02-01 12:51:39 UTC


README

Sphinx 扩展已被弃用且官方不支持。此包已更新,但现在已弃用。请参阅:[https://github.com/FoolCode/SphinxQL-Query-Builder](https://github.com/FoolCode/SphinxQL-Query-Builder) 以获取替代方案。如果使用实现了 SphinxClient 接口的实例,此包仍然可以使用,例如:[https://github.com/nilportugues/php-sphinx-search](https://github.com/nilportugues/php-sphinx-search)。

SphinxSearch 库是 PHP Sphinx 扩展的包装器,它允许使用更干净的面向对象接口。

API 的各个方面都得到了覆盖。

需求

  • PHP 5.5+
  • PHP Sphinx 扩展
  • Codeception 2.1+ 用于单元测试
  • Sphinx 服务器

注意:虽然 Sphinx 扩展对于 composer 是必需的,但如果客户端类具有 SphinxClient 类接口,则可以在 ServerSettings 中替换它;但是必须手动安装。

安装

使用 composer 安装,或从 github.com 检出/提取文件。

  • composer install scorpio/sphinx-search

在 Resources 中包含了一个占位符文件,用于 IDE 完成和常量引用。

使用

您需要一个正在运行的 Sphinx 服务器实例。一个示例配置文件位于 Resources/docs。

OSX

  • brew install sphinx php56-sphinx
  • 配置 Sphinx 实例

CentOS

  • 为您的 CentOS 版本设置 IUS 存储库
  • yum install php56-sphinx sphinx
  • 配置 Sphinx 服务器和数据

注意:最后一个可用的扩展版本是为 PHP56(1.3.3)提供的。

设置代码

require_once 'path/to/vendor/autoload.php';

use Scorpio\SphinxSearch\SearchManager;

$manager = new SearchManager(new ServerSettings('localhost', 9312));

要使用 Sphinx 进行搜索,您需要创建索引定义。每个索引必须首先在 Sphinx 配置文件中创建。然后必须创建一个特定于每个索引的实例,该实例设置此索引公开的可用的字段、属性(过滤器)等。完成后,将索引传递给查询。

SearchManager 允许同时运行多个查询。

注意:一旦查询被绑定到 SphinxClient,则无法将其删除。要在同一个 SphinxClient 上运行不同的查询,必须创建一个新的客户端实例。SearchManager 将在搜索运行后自动销毁 SphinxClient。

注意:当设置最大查询时间时,此值以毫秒为单位。如果设置为例如:100 毫秒,您可能只能返回一小部分不一致的结果。确保您使用的时间足以覆盖搜索,例如:5000 毫秒通常足够。0(零)将设置无限制。

运行单元测试

Codeception 用作测试框架

要运行代码覆盖率,您需要临时禁用 Sphinx 扩展,因为它会导致 ServerSettings 中的段错误,与扩展检查和 SphinxClient 类有关。在撰写本文时,尚未找到解决方案。

链接

存在一个更现代的类似 SQL 的 Sphinx-QL,更多详情请参阅以下链接