Example usage for org.apache.solr.client.solrj.response PivotField getCount

List of usage examples for org.apache.solr.client.solrj.response PivotField getCount

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj.response PivotField getCount.

Prototype

public int getCount() 

Source Link

Usage

From source file:au.org.ala.biocache.dao.SearchDAOImpl.java

License:Open Source License

/**
 * Read nested pivot results./*from w  w w. j av a  2s.  c o  m*/
 *
 * @param pfl
 * @return
 */
private List<FacetPivotResultDTO> getFacetPivotResults(List<PivotField> pfl) {
    if (pfl == null || pfl.size() == 0) {
        return null;
    }

    List<FacetPivotResultDTO> list = new ArrayList<FacetPivotResultDTO>();
    for (PivotField pf : pfl) {
        String value = pf.getValue() != null ? pf.getValue().toString() : null;
        if (pf.getPivot() == null || pf.getPivot().size() == 0) {
            list.add(new FacetPivotResultDTO(null, null, value, pf.getCount()));
        } else {
            list.add(new FacetPivotResultDTO(pf.getPivot().get(0).getField(),
                    getFacetPivotResults(pf.getPivot()), value, pf.getCount()));
        }
    }

    return list;
}

From source file:com.frank.search.solr.core.ResultHelper.java

License:Apache License

private static List<FacetPivotFieldEntry> convertPivotResult(List<PivotField> pivotResult) {
    if (CollectionUtils.isEmpty(pivotResult)) {
        return Collections.emptyList();
    }/*from w w  w  .  j  a va2 s. c  o  m*/

    ArrayList<FacetPivotFieldEntry> pivotFieldEntries = new ArrayList<FacetPivotFieldEntry>();

    for (PivotField pivotField : pivotResult) {
        SimpleFacetPivotEntry pivotFieldEntry = new SimpleFacetPivotEntry(
                new SimpleField(pivotField.getField()), String.valueOf(pivotField.getValue()),
                pivotField.getCount());

        List<PivotField> pivot = pivotField.getPivot();
        if (pivot != null) {
            pivotFieldEntry.setPivot(convertPivotResult(pivot));
        }

        pivotFieldEntries.add(pivotFieldEntry);
    }

    return pivotFieldEntries;
}

From source file:com.nridge.ds.solr.SolrResponseBuilder.java

License:Open Source License

private int populateFacetPivot(DataTable aTable, String[] aFacetNames, int aRowId, int aParentId,
        PivotField aPivotField) {
    Object facetValue;//from  w  w  w  .j  a  v  a2  s .  c  o  m
    FieldRow fieldRow;
    String fieldName, facetName, facetNameCount;
    Logger appLogger = mAppMgr.getLogger(this, "populateFacetPivot");

    appLogger.trace(mAppMgr.LOGMSG_TRACE_ENTER);

    if (aPivotField != null) {
        fieldName = aPivotField.getField();
        facetValue = aPivotField.getValue();
        if (facetValue == null)
            facetNameCount = String.format("Unassigned (%s)", aPivotField.getCount());
        else {
            facetName = aPivotField.getValue().toString();
            facetNameCount = String.format("%s (%s)", facetName, aPivotField.getCount());
        }

        ArrayList<String> facetValues = null;
        if (StringUtils.equals(fieldName, aFacetNames[0]))
            aParentId = 0;
        else {
            int rowCount = aTable.rowCount();
            if (rowCount > 0) {
                fieldRow = aTable.getRow(rowCount - 1);
                facetValues = aTable.getValuesByName(fieldRow, fieldName);
                if (facetValues != null) {
                    if (facetValues.size() == 0)
                        facetValues = null;
                    else
                        facetValues.add(facetNameCount);
                }
            }
        }
        if (facetValues == null) {
            fieldRow = aTable.newRow();
            aTable.setValueByName(fieldRow, "id", aRowId + 1);
            aTable.setValueByName(fieldRow, "parent_id", aParentId);
            facetValues = aTable.getValuesByName(fieldRow, fieldName);
            if (facetValues != null) {
                facetValues.add(facetNameCount);
                if (facetValues.size() == 1) {
                    aTable.addRow(fieldRow);
                    aRowId = aTable.rowCount();
                    aParentId = aRowId;
                }
            }
        }

        if (aPivotField.getPivot() != null) {
            for (PivotField pivotField : aPivotField.getPivot())
                aRowId = populateFacetPivot(aTable, aFacetNames, aRowId, aParentId, pivotField);
        }
    }

    appLogger.trace(mAppMgr.LOGMSG_TRACE_DEPART);

    return aRowId;
}

From source file:fr.cnes.sitools.metacatalogue.representation.GeoJsonMDEORepresentation.java

License:Open Source License

private void writeFacetPivots(JsonGenerator jGenerator, List<PivotField> pivotFields)
        throws JsonGenerationException, IOException {
    if (pivotFields == null) {
        return;/*from  w w w.j a v  a2 s . co m*/
    }
    jGenerator.writeStartArray();
    for (PivotField field : pivotFields) {
        jGenerator.writeStartObject();
        jGenerator.writeStringField("field", field.getField());
        jGenerator.writeStringField("value", getValue(field.getField(), field.getValue().toString()));
        jGenerator.writeNumberField("count", field.getCount());
        if (field.getPivot() != null) {
            jGenerator.writeFieldName("pivot");
            writeFacetPivots(jGenerator, field.getPivot());
        }
        jGenerator.writeEndObject();
    }
    jGenerator.writeEndArray();
}

From source file:org.alfresco.solr.query.DistributedAlfrescoSolrFacetingTest.java

License:Open Source License

@Test
public void pivotFaceting_mincountMissing_shouldReturnFacetsMincountOne() throws Exception {
    String jsonQuery = "{\"query\":\"(suggest:a)\",\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}";
    putHandleDefaults();/*from   w w w  .  j a  v a 2  s.  c om*/

    QueryResponse queryResponse = query(getDefaultTestClient(), true, jsonQuery, params("qt", "/afts",
            "shards.qt", "/afts", "start", "0", "rows", "0", "fl", "score,id", "facet", "true", "facet.pivot",
            "{http://www.alfresco.org/model/content/1.0}content,{http://www.alfresco.org/model/content/1.0}name"));

    NamedList<List<PivotField>> facetPivot = queryResponse.getFacetPivot();

    List<PivotField> firstLevelValues = facetPivot.getVal(0);
    Assert.assertThat(firstLevelValues.size(), is(2));
    PivotField firstLevelPivot0 = firstLevelValues.get(0);
    Assert.assertThat(firstLevelPivot0.getValue(), is("contenttwo"));
    Assert.assertThat(firstLevelPivot0.getCount(), is(4));

    List<PivotField> firstLevelPivot0Children = firstLevelPivot0.getPivot();
    Assert.assertThat(firstLevelPivot0Children.size(), is(1));
    PivotField secondLevelPivot0 = firstLevelPivot0Children.get(0);
    Assert.assertThat(secondLevelPivot0.getValue(), is("nametwo"));
    Assert.assertThat(secondLevelPivot0.getCount(), is(4));

    PivotField firstLevelPivot1 = firstLevelValues.get(1);
    Assert.assertThat(firstLevelPivot1.getValue(), is("contentone"));
    Assert.assertThat(firstLevelPivot1.getCount(), is(1));

    List<PivotField> firstLevelPivot1Children = firstLevelPivot1.getPivot();
    Assert.assertThat(firstLevelPivot1Children.size(), is(1));
    PivotField secondLevelPivot1 = firstLevelPivot1Children.get(0);
    Assert.assertThat(secondLevelPivot1.getValue(), is("nameone"));
    Assert.assertThat(secondLevelPivot1.getCount(), is(1));
}

From source file:org.alfresco.solr.query.DistributedAlfrescoSolrFacetingTest.java

License:Open Source License

@Test
public void pivotFaceting_mincountSetZero_shouldReturnFacetsMincountOne() throws Exception {
    String jsonQuery = "{\"query\":\"(suggest:a)\",\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}";
    putHandleDefaults();/*  w  w w.j a  v  a  2 s. c  o m*/

    QueryResponse queryResponse = query(getDefaultTestClient(), true, jsonQuery, params("qt", "/afts",
            "shards.qt", "/afts", "start", "0", "rows", "0", "fl", "score,id", "facet", "true", "facet.pivot",
            "{http://www.alfresco.org/model/content/1.0}content,{http://www.alfresco.org/model/content/1.0}name",
            "facet.pivot.mincount", "0"));

    NamedList<List<PivotField>> facetPivot = queryResponse.getFacetPivot();

    List<PivotField> firstLevelValues = facetPivot.getVal(0);
    Assert.assertThat(firstLevelValues.size(), is(2));
    PivotField firstLevelPivot0 = firstLevelValues.get(0);
    Assert.assertThat(firstLevelPivot0.getValue(), is("contenttwo"));
    Assert.assertThat(firstLevelPivot0.getCount(), is(4));

    List<PivotField> firstLevelPivot0Children = firstLevelPivot0.getPivot();
    Assert.assertThat(firstLevelPivot0Children.size(), is(1));
    PivotField secondLevelPivot0 = firstLevelPivot0Children.get(0);
    Assert.assertThat(secondLevelPivot0.getValue(), is("nametwo"));
    Assert.assertThat(secondLevelPivot0.getCount(), is(4));

    PivotField firstLevelPivot1 = firstLevelValues.get(1);
    Assert.assertThat(firstLevelPivot1.getValue(), is("contentone"));
    Assert.assertThat(firstLevelPivot1.getCount(), is(1));

    List<PivotField> firstLevelPivot1Children = firstLevelPivot1.getPivot();
    Assert.assertThat(firstLevelPivot1Children.size(), is(1));
    PivotField secondLevelPivot1 = firstLevelPivot1Children.get(0);
    Assert.assertThat(secondLevelPivot1.getValue(), is("nameone"));
    Assert.assertThat(secondLevelPivot1.getCount(), is(1));
}

From source file:org.alfresco.solr.query.DistributedAlfrescoSolrFacetingTest.java

License:Open Source License

@Test
public void pivotFaceting_mincountSetTwo_shouldReturnFacetsOriginalMincount() throws Exception {
    String jsonQuery = "{\"query\":\"(suggest:a)\",\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}";
    putHandleDefaults();/*ww w . ja v  a 2 s. co  m*/

    QueryResponse queryResponse = query(getDefaultTestClient(), true, jsonQuery, params("qt", "/afts",
            "shards.qt", "/afts", "start", "0", "rows", "0", "fl", "score,id", "facet", "true", "facet.pivot",
            "{http://www.alfresco.org/model/content/1.0}content,{http://www.alfresco.org/model/content/1.0}name",
            "facet.pivot.mincount", "2"));

    NamedList<List<PivotField>> facetPivot = queryResponse.getFacetPivot();

    List<PivotField> firstLevelValues = facetPivot.getVal(0);
    Assert.assertThat(firstLevelValues.size(), is(1));
    PivotField firstLevelPivot0 = firstLevelValues.get(0);
    Assert.assertThat(firstLevelPivot0.getValue(), is("contenttwo"));
    Assert.assertThat(firstLevelPivot0.getCount(), is(4));

    List<PivotField> firstLevelPivot0Children = firstLevelPivot0.getPivot();
    Assert.assertThat(firstLevelPivot0Children.size(), is(1));
    PivotField secondLevelPivot0 = firstLevelPivot0Children.get(0);
    Assert.assertThat(secondLevelPivot0.getValue(), is("nametwo"));
    Assert.assertThat(secondLevelPivot0.getCount(), is(4));
}

From source file:org.apache.drill.exec.store.solr.SolrRecordReader.java

License:Apache License

private int processFacetPivotResponse(List<PivotField> facetPivots) {
    SolrFacetPivot2ResultSet oSolrFacetPivot2ResultSet = new SolrFacetPivot2ResultSet();
    oSolrFacetPivot2ResultSet.build(facetPivots);
    int resultSeek = 0;
    int leafNodesSeek = 0;
    while (!oSolrFacetPivot2ResultSet.isEmpty()) {
        SolrFacetPivotRecord oSolrFacetPivotRecord = (SolrFacetPivotRecord) oSolrFacetPivot2ResultSet.pop();
        PivotField pivotField = oSolrFacetPivotRecord.getPivotField();
        String fieldName = pivotField.getField();
        Object fieldValue = pivotField.getValue();
        ValueVector vv = vectors.get(fieldName);
        if (oSolrFacetPivotRecord.getPivotSize() == 0) {
            Map<String, FieldStatsInfo> fieldStatsInfo = pivotField.getFieldStatsInfo();
            processRecord(vv, fieldValue, leafNodesSeek);
            int statsCounter = 0;

            if (isCountOnlyQuery()) {
                processCountQuery(vectors.get(String.valueOf(statsCounter)),
                        Long.valueOf(pivotField.getCount()), statsCounter, leafNodesSeek);
                statsCounter++;//w w w  . jav a2s . co m
            } else {
                for (SolrAggrParam solrAggrParam : solrAggrParams) {
                    FieldStatsInfo fieldStats = fieldStatsInfo.get(getSolrField(solrAggrParam.getFieldName(),
                            solrScanSpec.getCvSchema().getUniqueKey()));
                    String functionName = solrAggrParam.getFunctionName();

                    if (fieldStats != null) {
                        processStatsRecord(fieldStats, functionName, statsCounter, leafNodesSeek,
                                solrScanSpec.isGroup());
                        statsCounter++;

                        if (statsCounter == solrScanSpec.getProjectFieldNames().size()) {
                            break;
                        }
                    }
                }
            }
            leafNodesSeek++;
        } else {

            int start = (leafNodesSeek == oSolrFacetPivotRecord.getPivotSize()) ? 0
                    : Math.abs((leafNodesSeek - oSolrFacetPivotRecord.getPivotSize()));

            int end = (start == 0) ? leafNodesSeek : (start + oSolrFacetPivotRecord.getPivotSize());

            SolrRecordReader.logger.info("Start is : " + start + " End is : " + end);
            for (int i = start; i < end; i++) {
                processRecord(vv, fieldValue, i);
            }
            resultSeek += oSolrFacetPivotRecord.getPivotSize();
        }
    }
    return (resultSeek == 0) ? leafNodesSeek : resultSeek;
}

From source file:org.apache.metron.solr.dao.SolrSearchDao.java

License:Apache License

protected List<GroupResult> getGroupResults(GroupRequest groupRequest, int index,
        List<PivotField> pivotFields) {
    List<Group> groups = groupRequest.getGroups();
    List<GroupResult> searchResultGroups = new ArrayList<>();
    final GroupOrder groupOrder = groups.get(index).getOrder();
    pivotFields.sort((o1, o2) -> {/*from ww  w  .  ja  va 2 s. co  m*/
        String s1 = groupOrder.getGroupOrderType() == GroupOrderType.TERM ? o1.getValue().toString()
                : Integer.toString(o1.getCount());
        String s2 = groupOrder.getGroupOrderType() == GroupOrderType.TERM ? o2.getValue().toString()
                : Integer.toString(o2.getCount());
        if (groupOrder.getSortOrder() == SortOrder.ASC) {
            return s1.compareTo(s2);
        } else {
            return s2.compareTo(s1);
        }
    });

    for (PivotField pivotField : pivotFields) {
        GroupResult groupResult = new GroupResult();
        groupResult.setKey(pivotField.getValue().toString());
        groupResult.setTotal(pivotField.getCount());
        Optional<String> scoreField = groupRequest.getScoreField();
        if (scoreField.isPresent()) {
            groupResult.setScore((Double) pivotField.getFieldStatsInfo().get(scoreField.get()).getSum());
        }
        if (index < groups.size() - 1) {
            groupResult.setGroupedBy(groups.get(index + 1).getField());
            groupResult.setGroupResults(getGroupResults(groupRequest, index + 1, pivotField.getPivot()));
        }
        searchResultGroups.add(groupResult);
    }
    return searchResultGroups;
}

From source file:org.apache.metron.solr.dao.SolrSearchDaoTest.java

License:Apache License

@Test
public void getGroupResultsShouldProperlyReturnGroupResults() {
    GroupRequest groupRequest = new GroupRequest();
    Group group1 = new Group();
    group1.setField("field1");
    GroupOrder groupOrder1 = new GroupOrder();
    groupOrder1.setSortOrder("ASC");
    groupOrder1.setGroupOrderType("TERM");
    group1.setOrder(groupOrder1);/*from w  ww .j av a 2s  .  c  o m*/
    Group group2 = new Group();
    group2.setField("field2");
    GroupOrder groupOrder2 = new GroupOrder();
    groupOrder2.setSortOrder("DESC");
    groupOrder2.setGroupOrderType("COUNT");
    group2.setOrder(groupOrder2);
    groupRequest.setGroups(Arrays.asList(group1, group2));
    groupRequest.setScoreField("score");

    PivotField level1Pivot1 = mock(PivotField.class);
    PivotField level1Pivot2 = mock(PivotField.class);
    PivotField level2Pivot1 = mock(PivotField.class);
    PivotField level2Pivot2 = mock(PivotField.class);
    FieldStatsInfo level1Pivot1FieldStatsInfo = mock(FieldStatsInfo.class);
    FieldStatsInfo level1Pivot2FieldStatsInfo = mock(FieldStatsInfo.class);
    FieldStatsInfo level2Pivot1FieldStatsInfo = mock(FieldStatsInfo.class);
    FieldStatsInfo level2Pivot2FieldStatsInfo = mock(FieldStatsInfo.class);
    List<PivotField> level1Pivots = Arrays.asList(level1Pivot1, level1Pivot2);
    List<PivotField> level2Pivots = Arrays.asList(level2Pivot1, level2Pivot2);

    when(level1Pivot1.getValue()).thenReturn("field1value1");
    when(level1Pivot1.getCount()).thenReturn(1);
    when(level1Pivot1FieldStatsInfo.getSum()).thenReturn(1.0);
    when(level1Pivot1.getFieldStatsInfo()).thenReturn(new HashMap<String, FieldStatsInfo>() {
        {
            put("score", level1Pivot1FieldStatsInfo);
        }
    });
    when(level1Pivot2.getValue()).thenReturn("field1value2");
    when(level1Pivot2.getCount()).thenReturn(2);
    when(level1Pivot2FieldStatsInfo.getSum()).thenReturn(2.0);
    when(level1Pivot2.getFieldStatsInfo()).thenReturn(new HashMap<String, FieldStatsInfo>() {
        {
            put("score", level1Pivot2FieldStatsInfo);
        }
    });
    when(level2Pivot1.getValue()).thenReturn("field2value1");
    when(level2Pivot1.getCount()).thenReturn(3);
    when(level2Pivot1FieldStatsInfo.getSum()).thenReturn(3.0);
    when(level2Pivot1.getFieldStatsInfo()).thenReturn(new HashMap<String, FieldStatsInfo>() {
        {
            put("score", level2Pivot1FieldStatsInfo);
        }
    });
    when(level2Pivot2.getValue()).thenReturn("field2value2");
    when(level2Pivot2.getCount()).thenReturn(4);
    when(level2Pivot2FieldStatsInfo.getSum()).thenReturn(4.0);
    when(level2Pivot2.getFieldStatsInfo()).thenReturn(new HashMap<String, FieldStatsInfo>() {
        {
            put("score", level2Pivot2FieldStatsInfo);
        }
    });
    when(level1Pivot1.getPivot()).thenReturn(level2Pivots);

    List<GroupResult> level1GroupResults = solrSearchDao.getGroupResults(groupRequest, 0, level1Pivots);

    assertEquals("field1value1", level1GroupResults.get(0).getKey());
    assertEquals(1, level1GroupResults.get(0).getTotal());
    assertEquals(1.0, level1GroupResults.get(0).getScore(), 0.00001);
    assertEquals("field2", level1GroupResults.get(0).getGroupedBy());
    assertEquals("field1value2", level1GroupResults.get(1).getKey());
    assertEquals(2, level1GroupResults.get(1).getTotal());
    assertEquals(2.0, level1GroupResults.get(1).getScore(), 0.00001);
    assertEquals("field2", level1GroupResults.get(1).getGroupedBy());
    assertEquals(0, level1GroupResults.get(1).getGroupResults().size());

    List<GroupResult> level2GroupResults = level1GroupResults.get(0).getGroupResults();
    assertEquals("field2value2", level2GroupResults.get(0).getKey());
    assertEquals(4, level2GroupResults.get(0).getTotal());
    assertEquals(4.0, level2GroupResults.get(0).getScore(), 0.00001);
    assertNull(level2GroupResults.get(0).getGroupedBy());
    assertNull(level2GroupResults.get(0).getGroupResults());
    assertEquals("field2value1", level2GroupResults.get(1).getKey());
    assertEquals(3, level2GroupResults.get(1).getTotal());
    assertEquals(3.0, level2GroupResults.get(1).getScore(), 0.00001);
    assertNull(level2GroupResults.get(1).getGroupedBy());
    assertNull(level2GroupResults.get(1).getGroupResults());
}