org.apache.solr.client.solrj.response.RangeFacet Java Examples

The following examples show how to use org.apache.solr.client.solrj.response.RangeFacet. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ResponseDataGenerator.java    From ambari-logsearch with Apache License 2.0 6 votes vote down vote up
@SuppressWarnings("rawtypes")
public List<NameValueData> generateNameValueDataList(List<RangeFacet> rangeFacet) {
  List<NameValueData> nameValues = new ArrayList<>();
  if (rangeFacet == null) {
    return nameValues;
  }
  RangeFacet<?, ?> range = rangeFacet.get(0);

  if (range == null) {
    return nameValues;
  }
  List<RangeFacet.Count> listCount = range.getCounts();
  for (RangeFacet.Count cnt : listCount) {
    NameValueData nameValue = new NameValueData();
    nameValue.setName(String.valueOf(cnt.getValue()));
    nameValue.setValue(String.valueOf(cnt.getCount()));
    nameValues.add(nameValue);
  }
  return nameValues;
}
 
Example #2
Source File: DistributedAlfrescoSolrFacetingIT.java    From SearchServices with GNU Lesser General Public License v3.0 6 votes vote down vote up
@Test
public void rangeFaceting_mincountSetTwo_shouldReturnFacetsMincountTwo() throws Exception
{
    String jsonQuery = "{\"query\":\"(suggest:a)\",\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}";
    putHandleDefaults();

    QueryResponse queryResponse = query(getDefaultTestClient(), true, jsonQuery,
        params("qt", "/afts", "shards.qt", "/afts", "start", "0", "rows", "0", "fl", "score,id", "facet", "true",
            "facet.range", "{http://www.alfresco.org/model/content/1.0}created",
            "facet.range.start", "2000-01-02T00:00:00Z",
            "facet.range.end", "2020-01-02T00:00:00Z",
            "facet.range.gap", "+100DAY",
            "facet.mincount", "2"));

    //facet.distrib.mco=true
    List<RangeFacet> facetRanges = queryResponse.getFacetRanges();
    assertThat(facetRanges.size(),is(1));
    RangeFacet createdDateRangeFacet = facetRanges.get(0);
    List<RangeFacet.Count> createdDateCounts = createdDateRangeFacet.getCounts();

    assertThat(createdDateCounts.size(),is(1));
    assertThat(createdDateCounts.get(0).getValue(),is("2014-10-15T00:00:00Z"));
    assertThat(createdDateCounts.get(0).getCount(),is(2));
}
 
Example #3
Source File: ItemSearchServiceLiveTest.java    From tutorials with MIT License 6 votes vote down vote up
@Test
public void whenSearchingWithFacetRange_thenAllMatchingFacetsShouldAvialble() throws Exception {
    itemSearchService.index("hm0001", "Brand1 Washing Machine", "CategoryA", 100f);
    itemSearchService.index("hm0002", "Brand1 Refrigerator", "CategoryA", 125f);
    itemSearchService.index("hm0003", "Brand2 Ceiling Fan", "CategoryB", 150f);
    itemSearchService.index("hm0004", "Brand2 Dishwasher", "CategoryB", 250f);

    SolrQuery query = new SolrQuery();
    query.setQuery("*:*");

    query.addNumericRangeFacet("price", 100, 275, 25);

    QueryResponse response = solrClient.query(query);
    List<RangeFacet> rangeFacets = response.getFacetRanges().get(0).getCounts();

    assertEquals(7, rangeFacets.size());
}
 
Example #4
Source File: DistributedAlfrescoSolrFacetingIT.java    From SearchServices with GNU Lesser General Public License v3.0 5 votes vote down vote up
@Test
public void rangeFaceting_mincountMissing_shouldReturnFacetsMincountOne() throws Exception
{
    String jsonQuery = "{\"query\":\"(suggest:a)\",\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}";
    putHandleDefaults();

    QueryResponse queryResponse = query(getDefaultTestClient(), true, jsonQuery,
        params("qt", "/afts", "shards.qt", "/afts", "start", "0", "rows", "0", "fl", "score,id", "facet", "true",
            "facet.range", "{http://www.alfresco.org/model/content/1.0}created",
            "facet.range.start", "2000-01-02T00:00:00Z",
            "facet.range.end", "2020-01-02T00:00:00Z",
            "facet.range.gap", "+100DAY"));
    
    //facet.distrib.mco=true
    List<RangeFacet> facetRanges = queryResponse.getFacetRanges();
    assertThat(facetRanges.size(),is(1));
    RangeFacet createdDateRangeFacet = facetRanges.get(0);
    List<RangeFacet.Count> createdDateCounts = createdDateRangeFacet.getCounts();
    
    assertThat(createdDateCounts.size(),is(4));
    assertThat(createdDateCounts.get(0).getValue(),is("2014-10-15T00:00:00Z"));
    assertThat(createdDateCounts.get(0).getCount(),is(2));

    assertThat(createdDateCounts.get(1).getValue(),is("2015-01-23T00:00:00Z"));
    assertThat(createdDateCounts.get(1).getCount(),is(1));

    assertThat(createdDateCounts.get(2).getValue(),is("2015-11-19T00:00:00Z"));
    assertThat(createdDateCounts.get(2).getCount(),is(1));

    assertThat(createdDateCounts.get(3).getValue(),is("2016-12-23T00:00:00Z"));
    assertThat(createdDateCounts.get(3).getCount(),is(1));
}
 
Example #5
Source File: DistributedAlfrescoSolrFacetingIT.java    From SearchServices with GNU Lesser General Public License v3.0 5 votes vote down vote up
@Test
public void rangeFaceting_mincountSetZero_shouldReturnFacetsMincountOne() throws Exception
{
    String jsonQuery = "{\"query\":\"(suggest:a)\",\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}";
    putHandleDefaults();

    QueryResponse queryResponse = query(getDefaultTestClient(), true, jsonQuery,
        params("qt", "/afts", "shards.qt", "/afts", "start", "0", "rows", "0", "fl", "score,id", "facet", "true",
            "facet.range", "{http://www.alfresco.org/model/content/1.0}created",
            "facet.range.start", "2000-01-02T00:00:00Z",
            "facet.range.end", "2020-01-02T00:00:00Z",
            "facet.range.gap", "+100DAY",
            "facet.mincount", "0"));

    //facet.distrib.mco=true
    List<RangeFacet> facetRanges = queryResponse.getFacetRanges();
    assertThat(facetRanges.size(),is(1));
    RangeFacet createdDateRangeFacet = facetRanges.get(0);
    List<RangeFacet.Count> createdDateCounts = createdDateRangeFacet.getCounts();

    assertThat(createdDateCounts.size(),is(4));
    assertThat(createdDateCounts.get(0).getValue(),is("2014-10-15T00:00:00Z"));
    assertThat(createdDateCounts.get(0).getCount(),is(2));

    assertThat(createdDateCounts.get(1).getValue(),is("2015-01-23T00:00:00Z"));
    assertThat(createdDateCounts.get(1).getCount(),is(1));

    assertThat(createdDateCounts.get(2).getValue(),is("2015-11-19T00:00:00Z"));
    assertThat(createdDateCounts.get(2).getCount(),is(1));

    assertThat(createdDateCounts.get(3).getValue(),is("2016-12-23T00:00:00Z"));
    assertThat(createdDateCounts.get(3).getCount(),is(1));
}
 
Example #6
Source File: TestDistributedSearch.java    From lucene-solr with Apache License 2.0 5 votes vote down vote up
protected void checkMinCountsRange(List<RangeFacet.Count> counts, Object[] pairs) {
  assertEquals("There should be exactly " + pairs.length / 2 + " returned counts. There were: " + counts.size(), counts.size(), pairs.length / 2);
  assertTrue("Variable len param must be an even number, it was: " + pairs.length, (pairs.length % 2) == 0);
  for (int pairs_idx = 0, counts_idx = 0; pairs_idx < pairs.length; pairs_idx += 2, counts_idx++) {
    String act_name = counts.get(counts_idx).getValue();
    long act_count = counts.get(counts_idx).getCount();
    String exp_name = (String) pairs[pairs_idx];
    long exp_count = (long) pairs[pairs_idx + 1];
    assertEquals("Expected ordered entry " + exp_name + " at position " + counts_idx + " got " + act_name, act_name, exp_name);
    assertEquals("Expected count for entry: " + exp_name + " at position " + counts_idx + " got " + act_count, act_count, exp_count);
  }
}
 
Example #7
Source File: DistributedFacetPivotSmallTest.java    From lucene-solr with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings({"rawtypes"})
private List<RangeFacet> createExpectedRange(String key, int start, int end,
                                             int gap, int... values) {
  List<RangeFacet> expectedRanges = new ArrayList<>();
  RangeFacet expectedPrices = new RangeFacet.Numeric(key, start, end, gap, null, null, null);
  expectedRanges.add(expectedPrices);
  int idx = 0;
  for (int range = start; range < end; range += gap) {
    expectedPrices.addCount(String.valueOf(range), values[idx]);
    if (idx < values.length) {
      idx++;
    }
  }
  return expectedRanges;
}
 
Example #8
Source File: DistributedFacetPivotLargeTest.java    From lucene-solr with Apache License 2.0 5 votes vote down vote up
/**
 * asserts that the actual RangeFacet matches the expected criteria
 */
private void assertRange(String name, Object start, Object gap, Object end, int numCount,
                         @SuppressWarnings({"rawtypes"})RangeFacet actual) {
  assertEquals("NAME: " + actual.toString(), name, actual.getName());
  assertEquals("START: " + actual.toString(), start, actual.getStart());
  assertEquals("GAP: " + actual.toString(), gap, actual.getGap());
  assertEquals("END: " + actual.toString(), end, actual.getEnd());
  assertEquals("#COUNT: " + actual.toString(), numCount, actual.getCounts().size());
}
 
Example #9
Source File: DistributedFacetPivotSmallTest.java    From lucene-solr with Apache License 2.0 4 votes vote down vote up
public ComparablePivotField(String f, Object v, int count,
                            List<PivotField> pivot,  Map<String,Integer> queryCounts,
                            @SuppressWarnings({"rawtypes"})List<RangeFacet> ranges) {
  super(f, v, count, pivot, null, queryCounts, ranges);
}
 
Example #10
Source File: DistributedFacetPivotLargeTest.java    From lucene-solr with Apache License 2.0 4 votes vote down vote up
/**
 * spot checks some pivot values and the ranges hanging on them
 */
@SuppressWarnings({"unchecked"})
private void doTestPivotRanges() throws Exception {

  // note: 'p0' is only a top level range, not included in per-pivot ranges
  for (SolrParams p : new SolrParams[]{
      // results should be identical for all of these
      params("facet.range", "{!key=p0 facet.range.gap=500}pay_i",
          "facet.range", "{!key=p1 tag=t1 facet.range.gap=100}pay_i",
          "facet.range", "{!key=p2 tag=t1 facet.range.gap=200}pay_i",
          "facet.range.start", "0",
          "facet.range.end", "1000"),
      params("facet.range", "{!key=p0 facet.range.gap=500}pay_i",
          "facet.range", "{!key=p1 tag=t1 facet.range.gap=100}pay_i",
          "facet.range", "{!key=p2 tag=t1 facet.range.gap=200}pay_i",
          "f.pay_i.facet.range.start", "0",
          "facet.range.end", "1000"),
      params("facet.range", "{!key=p0 facet.range.gap=500 facet.range.start=0}pay_i",
          "facet.range", "{!key=p1 tag=t1 facet.range.gap=100 facet.range.start=0}pay_i",
          "facet.range", "{!key=p2 tag=t1 facet.range.gap=200 facet.range.start=0}pay_i",
          "facet.range.end", "1000")}) {

    QueryResponse rsp
        = query(SolrParams.wrapDefaults(p, params("q", "*:*",
        "rows", "0",
        "facet", "true",
        "facet.pivot", "{!range=t1}place_s,company_t")));

    List<PivotField> pivots = rsp.getFacetPivot().get("place_s,company_t");
    PivotField pf = null; // changes as we spot check
    List<RangeFacet.Count> rfc = null; // changes as we spot check

    // 1st sanity check top level ranges
    assertEquals(3, rsp.getFacetRanges().size());
    assertRange("p0", 0, 500, 1000, 2, rsp.getFacetRanges().get(0));
    assertRange("p1", 0, 100, 1000, 10, rsp.getFacetRanges().get(1));
    assertRange("p2", 0, 200, 1000, 5, rsp.getFacetRanges().get(2));

    // check pivots...

    // first top level pivot value
    pf = pivots.get(0);
    assertPivot("place_s", "cardiff", 257, pf);
    assertRange("p1", 0, 100, 1000, 10, pf.getFacetRanges().get(0));
    assertRange("p2", 0, 200, 1000, 5, pf.getFacetRanges().get(1));

    rfc = pf.getFacetRanges().get(0).getCounts();
    assertEquals("200", rfc.get(2).getValue());
    assertEquals(14, rfc.get(2).getCount());
    assertEquals("300", rfc.get(3).getValue());
    assertEquals(15, rfc.get(3).getCount());

    rfc = pf.getFacetRanges().get(1).getCounts();
    assertEquals("200", rfc.get(1).getValue());
    assertEquals(29, rfc.get(1).getCount());

    // drill down one level of the pivot
    pf = pf.getPivot().get(0);
    assertPivot("company_t", "bbc", 101, pf);
    assertRange("p1", 0, 100, 1000, 10, pf.getFacetRanges().get(0));
    assertRange("p2", 0, 200, 1000, 5, pf.getFacetRanges().get(1));

    rfc = pf.getFacetRanges().get(0).getCounts();
    for (RangeFacet.Count c : rfc) {

      assertEquals(0, c.getCount()); // no docs in our ranges for this pivot drill down
    }

    // pop back up and spot check a different top level pivot value
    pf = pivots.get(53);
    assertPivot("place_s", "placeholder0", 1, pf);
    assertRange("p1", 0, 100, 1000, 10, pf.getFacetRanges().get(0));
    assertRange("p2", 0, 200, 1000, 5, pf.getFacetRanges().get(1));

    rfc = pf.getFacetRanges().get(0).getCounts();
    assertEquals("0", rfc.get(0).getValue());
    assertEquals(1, rfc.get(0).getCount());
    assertEquals("100", rfc.get(1).getValue());
    assertEquals(0, rfc.get(1).getCount());

    // drill down one level of the pivot
    pf = pf.getPivot().get(0);
    assertPivot("company_t", "compholder0", 1, pf);
    assertRange("p1", 0, 100, 1000, 10, pf.getFacetRanges().get(0));
    assertRange("p2", 0, 200, 1000, 5, pf.getFacetRanges().get(1));

    rfc = pf.getFacetRanges().get(0).getCounts();
    assertEquals("0", rfc.get(0).getValue());
    assertEquals(1, rfc.get(0).getCount());
    assertEquals("100", rfc.get(1).getValue());
    assertEquals(0, rfc.get(1).getCount());

  }
}