使用Java API的嵌套面

时间:2019-07-16 19:01:19

标签: java solr

我有以下嵌套的构面,它们是时间的总和

{
    "query": "*:*",
    "facet": {
         "daterange": {
             "type": "range",
             "field": "created_date",
             "start": "2019-07-10T18:34:10Z",
             "end": "2019-07-11T19:51:56Z",
             "gap": "+8640000MILLISECONDS",
             "facet": {
                 "x":"sum(price)"
             }
        }
    }
}

solr java api支持吗?

我希望能够将构面对象作为参数传递

public SolrQuery addDateRangeFacet(String field, Date start, Date end, String gap) {
    add(FacetParams.FACET_RANGE, field);
    add(String.format(Locale.ROOT, "f.%s.%s", field, FacetParams.FACET_RANGE_START), start.toInstant().toString());
    add(String.format(Locale.ROOT, "f.%s.%s", field, FacetParams.FACET_RANGE_END),   end.toInstant().toString());
    add(String.format(Locale.ROOT, "f.%s.%s", field, FacetParams.FACET_RANGE_GAP),   gap);
    this.set(FacetParams.FACET, true);
    return this;
  }

使用org.apache.solr-solrj 7.0.1

1 个答案:

答案 0 :(得分:0)

我正在使用Java中的SolrQuery寻找嵌套面的答案,刚发现这篇文章: https://chakrayel.wordpress.com/2017/03/30/consuming-json-facet-api/ 基于此,我想您的情况的解决方案将是这样的(伪语法):

SolrQuery query = new SolrQuery();
query.set("json.facet", """{
               "daterange": {
               "type": "range",
               "field": "created_date",
               "start": "2019-07-10T18:34:10Z",
               "end": "2019-07-11T19:51:56Z",
               "gap": "+8640000MILLISECONDS",
               "facet": {
               "x":"sum(price)"
            }
        }""");

我还没有测试过帖子。

HTH。