Example usage for org.apache.lucene.facet MultiFacets MultiFacets

List of usage examples for org.apache.lucene.facet MultiFacets MultiFacets

Introduction

In this page you can find the example usage for org.apache.lucene.facet MultiFacets MultiFacets.

Prototype

public MultiFacets(Map<String, Facets> dimToFacets) 

Source Link

Document

Create this, with no default Facets .

Usage

From source file:org.apache.jackrabbit.oak.plugins.index.lucene.util.FacetHelper.java

License:Apache License

public static Facets getFacets(IndexSearcher searcher, Query query, TopDocs docs, QueryIndex.IndexPlan plan,
        boolean secure) throws IOException {
    Facets facets = null;/*from w w  w. j  a va2  s .c om*/
    @SuppressWarnings("unchecked")
    List<String> facetFields = (List<String>) plan.getAttribute(ATTR_FACET_FIELDS);
    if (facetFields != null && facetFields.size() > 0) {
        Map<String, Facets> facetsMap = new HashMap<String, Facets>();

        for (String facetField : facetFields) {
            FacetsCollector facetsCollector = new FacetsCollector();
            try {
                DefaultSortedSetDocValuesReaderState state = new DefaultSortedSetDocValuesReaderState(
                        searcher.getIndexReader(), FieldNames.createFacetFieldName(facetField));
                FacetsCollector.search(searcher, query, 10, facetsCollector);
                facetsMap.put(facetField,
                        secure ? new FilteredSortedSetDocValuesFacetCounts(state, facetsCollector,
                                plan.getFilter(), docs)
                                : new SortedSetDocValuesFacetCounts(state, facetsCollector));

            } catch (IllegalArgumentException iae) {
                LOGGER.warn("facets for {} not yet indexed", facetField);
            }
        }
        if (facetsMap.size() > 0) {
            facets = new MultiFacets(facetsMap);
        }

    }
    return facets;
}