【问题标题】:solr count group bysolr 计数分组依据
【发布时间】:2017-02-03 11:39:19
【问题描述】:

我想在 solr 命令中“转换”一个 SQL 查询。

我有 2 个 SQL 表“工作”和“公司”。

今天要统计一家公司发布的职位数量,我运行以下查询:

select c.id, count(j.id) 
from companies c
left join jobs j on j.client_id = c.id
group by c.id;

另一方面,我有 2 个集合“工作”和“公司”有相同的字段。

如何在 solr 中“转换”下面的查询?

我看到可以与父集合进行连接,但我不想在工作和公司之间创建层次结构(这没有意义)。

【问题讨论】:

    标签: solr solarium solr6


    【解决方案1】:

    您无法实现查询的直接版本,因为 Solr 不会按照您想要的方式进行连接。一个可能的解决方案是facet on client_id in jobs,因此您可以获得每个公司 ID 的计数,然后在显示每个公司的计数时从该结果中查找值(如果您确实需要左连接部分)。如果数据中不存在 client_id,则其计数为 0。facet=true&facet.field=client_id 之类的东西应该可以工作。

    如果您只需要索引中存在的公司的计数,我会将公司名称与 id 一起编入索引,以便您可以直接对名称进行分面。

    【讨论】:

    • 是的,如果我在“jobs”集合中请求,方面可能会起作用,但我在没有任何 job_id 的“companies”集合中请求。
    • 正如我所描述的 - 如果您还想检索没有工作的公司,则必须执行两个查询。首先搜索公司,然后使用公司 ID 来限制工作中的结果集,或者首先搜索工作,然后使用该构面为结果集中的每个公司生成计数。您可以为此使用流式表达式,但这在很大程度上取决于您使用的 Solr 版本(以及您的库是否支持它)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2011-06-09
    • 2018-07-28
    • 1970-01-01
    • 2023-03-13
    • 2021-04-11
    • 2012-09-18
    相关资源
    最近更新 更多