`
strayly
  • 浏览: 93653 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用bobo-browse 实现lucene的分组统计

阅读更多
bobo-browse 是一用java写的lucene扩展组件,通过它可以很方便在lucene上实现分组统计功能。

可以从http://code.google.com/p/bobo-browse/上下载和查看相关文档。

下面介绍如何使用:

第一步:设置相关配置文件

bobo-browse 使用了spring,这里主要配置bobo.spring和field.xml两个文件。可以从他的源码例子中找到这两个文件,参考它做相应的修改。


同时这两个文件要放在和索引文件的同一目录下。



第二步:搜索实现

字段配置写好之后,就可以在搜索的java文件中加上一些代码就可以得到统计结果了。

参考文档http://code.google.com/p/bobo-browse/wiki/GettingStarted

比如我要获取color字段按多到少的10个值

// opening a lucene index
Directory idx = FSDirectory.open(new File("myidx"));
IndexReader reader = IndexReader.open(idx);
// decorate it with a bobo index reader
BoboIndexReader boboReader = BoboIndexReader.getInstance(reader);
// creating a browse request
BrowseRequest br=new BrowseRequest();
br.setCount(10);
br.setOffset(0);
// parse a query
QueryParser qp = new QueryParser(fields,new StandardAnalyzer());
Query q=qp.parse(keyword);
br.setQuery(q);
// add the facet output specs
FacetSpec colorSpec = new FacetSpec();

colorSpec.setMaxHitCount(10);
colorSpec.setOrderBy(FacetSortSpec.OrderHitsDesc);
br.setFacetSpec("color",colorSpec);
// perform browse
Browsable browser=new BoboBrowser(boboReader);
BrowseResult result=browser.browse(br);
int totalHits = result.getNumHits();
BrowseHit[] hits = result.getHits();
Map<String,FacetAccessible> facetMap = result.getFacetMap();
FacetAccessible colorFacets = facetMap.get("color");
List<BrowseFacet> facetVals = colorFacets.getFacets();  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics