lucene中的计数和子计数

时间:2011-04-14 14:23:42

标签: lucene

lucene中的我的字段是product_name,type和sub_types。

我用abc查询类型,这导致我的类型为abc的产品。 这种abc类型的产品有sub_types,如pqr和xyz。

我可以使用TopScoreDocCollector.getTotalHits()来获取xyz类型的总数。

但我想得到sub_types的数量。即。 pqr和xyz。

我怎样才能得到它?

任何回复对我都有很大的帮助。

提前致谢。

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是根据您的abc查询创建过滤器,然后使用该过滤器来约束子类型查询的结果。

IndexSearcher searcher = // searcher to use
int nDocs = 100; // number of docs to retrieve
QueryParser parser = // query parser to use

Query typeQuery = parser.parse("type:abc");
Filter f = CachingWrapperFilter(new QueryWrapperFilter(typeQuery));
Query subtypeQuery = parser.parse("sub_type:xyz");
TopDocs results = searcher.search(subtypeQuery, f, nDocs);

另一个想法:如果你事先知道你感兴趣的子类型,你可以简单地在查询中添加一个类型和一个子类型:+type:abc +sub_type:xyz

最后,如果您有这类查询,可以考虑使用Solr索引数据。