private int GetCount(IndexReader r, Query q)
{
if (q is BooleanQuery)
{
return ((BooleanQuery) q).GetClauses().Length;
}
else if (q is ConstantScoreQuery)
{
DocIdSetIterator iter = ((ConstantScoreQuery) q).Filter.GetDocIdSet(r).Iterator();
int count = 0;
while (iter.NextDoc() != DocIdSetIterator.NO_MORE_DOCS)
{
count++;
}
return count;
}
else
{
throw new System.SystemException("unepxected query " + q);
}
}