gpt4 book ai didi

java - 如何使用 solrj 4.9.0 提取统计组件

转载 作者:搜寻专家 更新时间:2023-11-01 03:05:16 24 4
gpt4 key购买 nike

我有一个这样的 solr 查询

q=categories:cat1 OR categories:cat2&stats=true&stats.field=count&stats.facet=block_num

基本上,我想按 block 数获取总和(计数)组。

此查询适用于浏览器。但是使用 solrj,我无法从 Response obj 访问统计字段。我可以做一个 response.getFieldStatsInfo()。但这不是我想要的。这是我构建查询的方式

    SolrQuery query = new SolrQuery(q);       
query.add("stats", "true");
query.add("stats.field", "count");
query.add("stats.facet", "block_num");

使用调试器,我可以看到响应有一个私有(private)的 statsInfo 对象,它有我正在寻找的信息。但是没有访问该对象的api。

我想知道有没有

  1. 一种比 solrj 更好的查询 solr 服务器的方法(curl?你如何解析响应?
  2. 构建查询的更好方法。也许使用组而不是统计数据?
  3. 访问查询响应中隐藏的 statsInfo 对象的方法()? 【真是郁闷啊。我可以在调试器的私有(private)对象中看到我需要的所有信息!]

谢谢!

最佳答案

可以这样做:

// 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());
}

关于java - 如何使用 solrj 4.9.0 提取统计组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24966570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com