php - SolrQuery 的 Zend_Paginator 适配器

标签 php zend-framework solr pagination zend-paginator

我目前正在 Zend_Paginator 的 PECL SolrQuery 适配器中工作。我想不出避免重复查询的方法。谁有更好的实现方式?

<?php
require_once 'Zend/Paginator/Adapter/Interface.php';
class Xxx_Paginator_Adapter_SolrQuery implements Zend_Paginator_Adapter_Interface
{
    private $query;
    private $client;
    public function __construct(SolrQuery $query, $client) {
        $this->query = $query;
        $this->client = $client instanceof SolrClient ? $client : new SolrClient($client);
    }
    public function count() {
        $this->query->setRows(0);
        return $this->execute()->numFound;
    }
    public function getItems($offset, $itemCountPerPage) {
        $this->query->setStart($offset)->setRows($itemCountPerPage);
        return $this->execute()->docs;
    }
    private function execute() {
        $response = $this->client->query($this->query)->getResponse();
        return $response['response'];
    }
}

最佳答案

您可能希望基于响应的 SolrObject 而不是查询来执行此操作。您需要的所有信息都在这里。

$solrResponse = $solrClient->query($query);
$solrObject = $solrResponse->getResponse();
$paginator = new Zend_Paginator(new Xxx_Paginator_Adapter_SolrQuery($solrObject));

关于php - SolrQuery 的 Zend_Paginator 适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329823/

相关文章:

php - 在 where 子句中将经过净化的输入作为列名传递

php延迟发送数据5分钟

php - Zend 框架 : How to handle exceptions in Ajax requests?

lucene - LockObtainFailedException 使用 solr 更新 Lucene 搜索索引

solr - 使用SOLR索引时使用Elasticsearch查询索引时要注意什么?

ruby-on-rails - 太阳黑子合取和析取不起作用

javascript - 如何从输入字段中获取特定值

php - PHP调用中@符号的意义

php - 如何检查结果中可用或不可用的数据?

php - 如何在我的域中包含 Zend Framework 库?