"Group by" 在使用 solrj 的 solr 字段上

"Group by" on a solr field using solrj

我正在使用 SOLR 2.5.1

我有一个字段type。我正在使用 SOLR Java 驱动程序进行查询。我只在查询中获取 type 字段。

注意:查询字段和 fl(type 在我的例子中)是不同的

说响应类似于

{
  "response": {
    "numFound": 200,
    "start": 0,
    "docs": [
      {
        "type": "A"
      },
        {
        "type": "B"
      },
       {
        "type": "A"
      },
        {
        "type": "A"
      },
       {
        "type": "C"
      },
       {
        "type": "D"
      },
       {
        "type": "A"
      },
       {
        "type": "B"
      },
       {
        "type": "C"
      },
       {
        "type": "B"
      }
    ]
  }
}

我需要对输出进行分组并找出出现次数。输出如:

"A":4, "B":3, "C":2, "D":1

我可以用 java 代码处理它。但是有什么方法可以对特定字段进行分组和计数吗?

这称为 faceting 并为您提供字段中每个索引词的计数。如果您想要为完整文本生成计数(即您想要计算 New York 而不是 NewYork),请务必将每个术语保留为单个标记。字符串字段通常非常适合作为分面的字段类型。

对于 SolrJ 集成,您在查询中使用 .addFacetField("type"),然后您可以在响应对象上使用 getFacetField("type")