【问题标题】:How can I fix an incorrect result count with Sphinx and CakePHP pagination?如何使用 Sphinx 和 CakePHP 分页修复错误的结果计数?
【发布时间】:2012-05-14 22:34:14
【问题描述】:

Sphinx 搜索显示正确的结果,但我遇到了分页问题。如果我的搜索返回 3 条记录,它将显示“第 1 页,共 1 页,显示总共 15 条记录中的 15 条记录,从记录 1 开始,到 15 结束”。假设我的关键字是“How”,app/views/posts/index.ctp 显示 3 条记录带有“How”一词,但我的分页显示“显示 15 条记录中的 15 条记录”而不是“显示 3 条记录中的 3 条记录”。

我的代码中有这些行:

$sphinx = array('matchMode' => SPH_MATCH_ALL, 'sortMode' => array(SPH_SORT_EXTENDED => '@relevance DESC')); 
    $results = $this->Post->find('all', array('search' => $this->data['Post']['query'], 'sphinx' => $sphinx)); 
    $this->set('posts', $results, $this->paginate());

我应该如何修复分页以显示找到的正确数量的项目?

【问题讨论】:

    标签: php cakephp cakephp-1.3 sphinx


    【解决方案1】:

    首先,您没有为社区提供足够的信息来了解问题所在...

    我建议您尝试基于 AJAX 的分页(link1link2)并将其输出包含在您的 sphinx 输出中,但我不知道您是否遇到(仅)连接到 Shpinx 或 Cake 的问题,还是两者兼有?

    【讨论】:

    • 您好鲍里斯拉夫,感谢您的回复。我认为问题出在我的 cakephp 上。上面的代码在我的 app/controllers/posts_controller.php 中,如果我将它传递到我的视图中,它会显示结果($results),但是,分页总是显示我数据库中所有帖子的总数(“显示 15总共 15 条记录”),而不仅仅是找到的记录数。说,我的关键字是“如何”,app/views/posts/index.ctp 显示 3 条带有“如何”一词的记录,但我的分页显示“显示 15 条记录中的 15 条记录”而不是“显示 3 条记录中的 3 条记录”全部的。”希望,这是有道理的。 TY
    • 嗨莱曼,这确实更有意义。搜索时更改结果的数量。分页用于在“分页”事务中显示大量数据记录。当您进行搜索时,您正在更改结果集,而不是分页选项。我想这就是您遇到此问题的原因。也许如果您更改分页以计算搜索结果并即时更改分页计数器的内容,这一切都对您有用。这实际上只是一个建议,但我认为没有其他方法可以做到这一点。仔细查看提供的示例。
    • 自定义基于 Ajax 的分页并不是最简单的事情,但它是 Cake 的一个有趣的特性。随时问更多,所以我们可以尝试提供帮助。干杯。
    猜你喜欢
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 2013-08-24
    相关资源
    最近更新 更多