【问题标题】:How to sum an attribute in a sphinx group search?如何对 sphinx 组搜索中的属性求和?
【发布时间】:2010-10-14 07:16:33
【问题描述】:

我需要 sphinx 按属性的总和对结果进行排序。我需要:

  • 按 ID 对结果进行分组(完成)
  • 按一个属性的 SUM 对结果进行排序

我找不到对这个属性求和的方法。 我怎么能这样做?

(我使用 sphinx PHP API)

【问题讨论】:

    标签: php mysql sorting grouping sphinx


    【解决方案1】:

    Sphinx 从 0.9.9-rc2 版本开始支持聚合函数(sum、avg、min、max)。 查看来自www.sphinxsearch.com/docs/current.html的文档

    【讨论】:

    • 我浏览了所有 sphinx 文档,但没有找到一个关于如何使用 PHP api 进行 SUM 的示例。您的报价来自 sphinxQL 部分
    【解决方案2】:

    呼应上一个答案,在 Sphinx 查询中是不可能的。虽然the expression syntax 允许在排序中进行某种级别的计算,但它没有任何聚合函数。除非您将该总和值存储为一个属性(这可能是一个选项 - 在索引期间计算它),否则它必须是每条记录的单独 SQL 查询。

    【讨论】:

      【解决方案3】:

      据我所知,这在当前的 Sphinx 版本中是不可能的。 group by 函数旨在返回 group by 属性(即项目组的不同属性)、该组中的计数以及该组中的“顶部”项目。

      最好的办法是在 Sphinx 之外进行求和。您可以按属性按组执行 Sphinx 搜索排序,然后在 PHP 中循环遍历这些项目,并随时求和。这种方法可能效率不高,因此可能需要定期缓存以减少服务器负载。

      【讨论】:

        【解决方案4】:

        【讨论】:

        • 使用链接添加详细信息。不要发布仅链接的答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-17
        • 1970-01-01
        • 1970-01-01
        • 2017-01-02
        • 1970-01-01
        相关资源
        最近更新 更多