读书人

compass2.0集成bobo-browse 兑现分组统

发布时间: 2012-12-18 12:43:41 作者: rapoo

compass2.0集成bobo-browse 实现分组统计
bobo-browse 下载地址:http://code.google.com/p/bobo-browse/downloads/list

try {final ResourceMapping mapping = ((InternalCompassSession) session).getMapping().findRootMappingByClass(type);final LuceneSearchEngineInternalSearch lucene = LuceneHelper.getLuceneInternalSearch(session, mapping.getSubIndexHash().getSubIndexes(),new String[] { mapping.getAlias() });final MultiValueFacetHandler nameHandler = new MultiValueFacetHandler(name);List<FacetHandler> handlerList = Arrays.asList(new FacetHandler[]{nameHandler});// decorate it with a bobo index reader            BoboIndexReader boboReader = BoboIndexReader.getInstance(lucene.getReader(),handlerList);                        // creating a browse request            BrowseRequest br=new BrowseRequest();            br.setCount(10);            br.setOffset(0);            br.setQuery(((LuceneSearchEngineQuery) ((DefaultCompassQuery) query).getSearchEngineQuery()).getQuery());            // add the facet output specs            FacetSpec colorSpec = new FacetSpec();            colorSpec.setOrderBy(FacetSortSpec.OrderHitsDesc);            br.setFacetSpec(name,colorSpec);                        // perform browse            Browsable browser=new BoboBrowser(boboReader);            BrowseResult result = null;try {result = browser.browse(br);} catch (BrowseException e) {e.printStackTrace();}            Map<String,FacetAccessible> facetMap = result.getFacetMap();            FacetAccessible colorFacets = facetMap.get(name);            List<BrowseFacet> facetVals = colorFacets.getFacets();            Map<String,Integer> map = new HashMap<String, Integer>();            for (BrowseFacet bf : facetVals) {            map.put(bf.getValue(), bf.getHitCount());     }return map;} catch (final IOException e) {throw new CompassException("failed to get terms from reader", e);}

读书人网 >编程

热点推荐