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();
可以从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();