lucene中的我的字段是product_name,type和sub_types。
我用abc查询类型,这导致我的类型为abc的产品。 这种abc类型的产品有sub_types,如pqr和xyz。
我可以使用TopScoreDocCollector.getTotalHits()来获取xyz类型的总数。
但我想得到sub_types的数量。即。 pqr和xyz。
我怎样才能得到它?
任何回复对我都有很大的帮助。
提前致谢。
答案 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索引数据。