2011-04-14 6 views
0

lucene의 내 필드는 product_name, type 및 sub_types입니다.lucene의 카운트 및 서브 카운트

abc를 사용하여 유형을 쿼리하고 있으므로이 유형의 제품은 abc입니다. 이 abc 유형 제품에는 sub_types가 pqr 및 xyz로 있습니다.

TopScoreDocCollector.getTotalHits()를 사용하여 xyz 유형의 총 개수를 얻을 수 있습니다.

하지만 sub_types 수를 얻고 싶습니다. 즉. pqr 및 xyz.

어떻게받을 수 있습니까?

모든 답변이 나에게 큰 도움이 될 것입니다.

미리 감사드립니다.

답변

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을 사용하여 데이터를 인덱싱하는 것이 좋습니다.