Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用solrj 4.9.0提取统计数据组件_Java_Statistics_Solrj_Solr Query Syntax - Fatal编程技术网

Java 如何使用solrj 4.9.0提取统计数据组件

Java 如何使用solrj 4.9.0提取统计数据组件,java,statistics,solrj,solr-query-syntax,Java,Statistics,Solrj,Solr Query Syntax,我有一个这样的solr查询 q=categories:cat1 OR categories:cat2&stats=true&stats.field=count&stats.facet=block_num 基本上,我想通过block num获得sum(count)组 此查询在浏览器上工作。但是有了solrj,我无法从Response obj访问stats字段。我可以做一个响应。getFieldStatsInfo()。但这不是我想要的。下面是我如何构造查询的 Sol

我有一个这样的solr查询

q=categories:cat1 OR categories:cat2&stats=true&stats.field=count&stats.facet=block_num
基本上,我想通过block num获得sum(count)组

此查询在浏览器上工作。但是有了solrj,我无法从Response obj访问stats字段。我可以做一个响应。getFieldStatsInfo()。但这不是我想要的。下面是我如何构造查询的

    SolrQuery query = new SolrQuery(q);       
    query.add("stats", "true");
    query.add("stats.field", "count");
    query.add("stats.facet", "block_num");
通过调试器,我可以看到响应有一个私有的StatInfo对象,它有我正在寻找的信息。但是没有api来访问该对象

我想知道是否有

  • 查询solr服务器而不是solrj(curl)的更好方法?如何解析响应
  • 构造我的查询的更好方法。可能使用组而不是统计
  • 访问查询响应()中隐藏的StatInfo对象的方法?[太令人沮丧了。我可以在调试器的私有对象中看到我需要的所有信息!]

  • 谢谢!

    可以执行以下操作:

    // Field names
    private static final String FIELD_ONE = "field_one";
    private static final String FIELD_TWO = "field_two";
    
    // Initialized somewhere in constructor
    private final HttpSolrServer solrClient;
    
    public void printStats() throws SolrServerException {
        final SolrQuery query = new SolrQuery("*:*");
        query.setGetFieldStatistics(true);
        query.setGetFieldStatistics(FIELD_ONE);
        query.setGetFieldStatistics(FIELD_TWO);
        final QueryResponse response = solrClient.query(query);
    
        final FieldStatsInfo fieldOneStats = response.getFieldStatsInfo().get(FIELD_ONE); 
        System.out.println(fieldOneStats.getSum());
        System.out.println(fieldOneStats.getMin());
        System.out.println(fieldOneStats.getMax());
    
        final FieldStatsInfo fieldTwoStats = response.getFieldStatsInfo().get(FIELD_TWO);
        System.out.println(fieldTwoStats.getSum());
        System.out.println(fieldTwoStats.getMin());
        System.out.println(fieldTwoStats.getMax());
    }