gemorroj / sphinx-bundle
Sphinx 在 Symfony 中的搜索
2.0.1
2014-03-10 17:22 UTC
Requires
- php: >=5.3.3
- neutron/sphinxsearch-api: 2.0.*
- symfony/framework-bundle: 2.*
This package is auto-updated.
Last update: 2024-09-08 22:13:42 UTC
README
此包使用 Sphinx PHP API,您需要在 dir/sphinxapi.php 中包含您的 SphinxAPI 版本,该版本可在 http://sphinxsearch.com/downloads/ 上找到。
安装
- 添加到 composer.json
{ "require": { "gemorroj/sphinx-bundle": "dev-master" } }
要求
- PHP >= 5.5.9
- Symfony >= 3.0
简单示例
<?php $client = $this->get('highco.sphinx.client'); $bridge = $this->get('highco.sphinx.pager.white_october.doctrine_orm'); // $bridge->setEntityManagerByName('my_custom_em'); // $bridge->setEntityManager($em); $bridge->setRepositoryClass('HighcoUserBundle:User'); $bridge->setPkColumn('id'); $bridge->setSphinxResults($client->Query('Stéphane')); $pager = $bridge->getPager();
分页示例
<?php $itemsPerPage = 50; $page = 1; $client = $this->get('highco.sphinx.client'); $client->SetLimits( ($page -1) * $itemsPerPage, $itemsPerPage); $bridge = $this->get('highco.sphinx.pager.white_october.doctrine_orm'); $bridge->setRepositoryClass('HighcoUserBundle:User'); $bridge->setPkColumn('id'); $bridge->setSphinxResults($client->Query('Stéphane')); $pager = $bridge->getPager(); $pager->setMaxPerPage($itemsPerPage); $pager->setCurrentPage($page);
分页示例(多个查询)
<?php $itemsPerPage = 50; $page = 1; $client = $this->get('highco.sphinx.client'); $client->SetLimits( ($page -1) * $itemsPerPage, $itemsPerPage); $bridge = $this->get('highco.sphinx.pager.white_october.doctrine_orm'); $bridge->setRepositoryClass('HighcoUserBundle:User'); $bridge->setPkColumn('id'); $client->AddQuery('Stéphane', 'address_book'); $client->AddQuery('Nikola', 'address_book'); $bridge->setSphinxResults($client->RunQueries(), true); $pager = $bridge->getPager(); $pager->setMaxPerPage($itemsPerPage); $pager->setCurrentPage($page);
分页示例/具有区分符属性的
<?php $itemsPerPage = 50; $page = 1; $client = $this->get('highco.sphinx.client'); $client->SetLimits( ($page -1) * $itemsPerPage, $itemsPerPage); $bridge = $this->get('highco.sphinx.pager.white_october.doctrine_orm'); /** * Make sure you have this column defined as attribute in Sphinx (i.e: sql_attr_string = type). * Sphinx prior version 1.10 does not have support for sql_attr_string, but you can use sql_attr_uint * and have your discriminators defined as constants in PHP. */ $bridge->setDiscriminatorColumn('type'); $bridge->setDiscriminatorRepositories(array( 'article' => array( 'class' => 'BlogBundle:Article', 'em' => 'default', ), 'category' => array( 'class' => 'BlogBundle:Category', 'em' => 'default', ), 'note' => array( 'class' => 'NotesBundle:Message', 'em' => 'notes' ), )); $bridge->setPkColumn('id'); $bridge->setSphinxResults($client->Query('Stéphane')); $pager = $bridge->getPager(); $pager->setMaxPerPage($itemsPerPage); $pager->setCurrentPage($page);
待办事项
-
注意编码规范,例如 I... 应该是 ...Interface,行应换行等...
-
允许用户在 config.yml 中修改客户端选项
-
创建默认分页器
-
寻找 doctrine FIELD 扩展,以便能够在 PagerFanta 中传递 DoctrineORMAdapter!
愿望清单
- 提供其他分页器桥接