public override int Advance(int target)
{
if (scorerDocQueue.Size() < minimumNrMatchers)
{
return currentDoc = NO_MORE_DOCS;
}
if (target <= currentDoc)
{
return currentDoc;
}
do
{
if (scorerDocQueue.TopDoc() >= target)
{
return AdvanceAfterCurrent()?currentDoc:(currentDoc = NO_MORE_DOCS);
}
else if (!scorerDocQueue.TopSkipToAndAdjustElsePop(target))
{
if (scorerDocQueue.Size() < minimumNrMatchers)
{
return currentDoc = NO_MORE_DOCS;
}
}
}
while (true);
}
}