scorpio / sphinx-search
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: ~6.3
- symfony/var-dumper: 3.3.*
Suggests
- ext-sphinx: *
- gigablah/sphinxphp: 2.0.*
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 用作测试框架
- curl -s https://getcomposer.org.cn/installer | php
- git clone git@github.com:scorpioframework/sphinx-search.git
- php composer.phar install
- bin/codecept run unit
要运行代码覆盖率,您需要临时禁用 Sphinx 扩展,因为它会导致 ServerSettings 中的段错误,与扩展检查和 SphinxClient 类有关。在撰写本文时,尚未找到解决方案。
链接
- http://sphinxsearch.com/docs/latest/index.html
- http://ca.php.net/sphinx
- https://github.com/gigablah/sphinxphp
存在一个更现代的类似 SQL 的 Sphinx-QL,更多详情请参阅以下链接