ToParentBlockJoinQuery:
-Result in groups where each group represent parent and corresponding matched child’s.
ToChildBlockJoinQuery:
for given parent list all the child's of him.
***Examples***
throws IOException {
List<Document> parentDocs = new ArrayList<Document>();
Filter parentFilter = new FixedBitSetCachingWrapperFilter(
new QueryWrapperFilter(new TermQuery(new Term("path", "root"))));
TotalHitCountCollector tc = new TotalHitCountCollector();
SearchUtility.getFixSearcher().search(parentQuery, tc);
ToParentBlockJoinQuery parentJoinQuery = new ToParentBlockJoinQuery(
childQuery, parentFilter, ScoreMode.None);
logger.debug("Total parent matching parentQuery:" + tc.getTotalHits());
ToParentBlockJoinCollector pjc = new ToParentBlockJoinCollector(
Sort.RELEVANCE, tc.getTotalHits() , false, false);
BooleanQuery searchQuery = new BooleanQuery();
searchQuery.add(parentJoinQuery, Occur.MUST);
searchQuery.add(parentQuery, Occur.MUST);
SearchUtility.getFixSearcher().search(searchQuery, pjc);
TopGroups<Integer> topgroups = pjc.getTopGroupsWithAllChildDocs(
parentJoinQuery, Sort.RELEVANCE, 0, 0, true);
if (topgroups == null)
return parentDocs;
GroupDocs<Integer>[] groupdocs = topgroups.groups;
logger.debug("Total groupdocs:" + groupdocs.length);
for (GroupDocs<Integer> g : groupdocs) {
Document parentDoc = SearchUtility.getFixSearcher().doc(
g.groupValue);
logger.debug("Parent DocId:" + g.groupValue);
parentDocs.add(parentDoc);
}
return parentDocs;
}
-Result in groups where each group represent parent and corresponding matched child’s.
ToChildBlockJoinQuery:
for given parent list all the child's of him.
***Examples***
- Use ToParentBlockJoinQuery to retrieve parent doc based on matched child doc.
throws IOException {
List<Document> parentDocs = new ArrayList<Document>();
Filter parentFilter = new FixedBitSetCachingWrapperFilter(
new QueryWrapperFilter(new TermQuery(new Term("path", "root"))));
TotalHitCountCollector tc = new TotalHitCountCollector();
SearchUtility.getFixSearcher().search(parentQuery, tc);
ToParentBlockJoinQuery parentJoinQuery = new ToParentBlockJoinQuery(
childQuery, parentFilter, ScoreMode.None);
logger.debug("Total parent matching parentQuery:" + tc.getTotalHits());
ToParentBlockJoinCollector pjc = new ToParentBlockJoinCollector(
Sort.RELEVANCE, tc.getTotalHits() , false, false);
BooleanQuery searchQuery = new BooleanQuery();
searchQuery.add(parentJoinQuery, Occur.MUST);
searchQuery.add(parentQuery, Occur.MUST);
SearchUtility.getFixSearcher().search(searchQuery, pjc);
TopGroups<Integer> topgroups = pjc.getTopGroupsWithAllChildDocs(
parentJoinQuery, Sort.RELEVANCE, 0, 0, true);
if (topgroups == null)
return parentDocs;
GroupDocs<Integer>[] groupdocs = topgroups.groups;
logger.debug("Total groupdocs:" + groupdocs.length);
for (GroupDocs<Integer> g : groupdocs) {
Document parentDoc = SearchUtility.getFixSearcher().doc(
g.groupValue);
logger.debug("Parent DocId:" + g.groupValue);
parentDocs.add(parentDoc);
}
return parentDocs;
}
No comments:
Post a Comment