yes, it's less efficient. Lucene database has multiple segments, each segment can treat as a independent database. The same term may exists in >= 1 segments.
Xapian::TermIterator it = db_in.allterms_begin();
This method traverse all terms in the first segment, then the second segment, until the last segment.

it_pl = db_in.postlist_begin(*it);
But this method LuceneDatabase::postlist_begin will find all postlists for a particular term in all segments.

If doing like this, each postlist will be traversed multiple times, so I write another method LucenePostIterator,
which only traverse the postlist in the current segment, avoid duplicate traverse.

Actually, I think LucenePostIterator is not quite approriate, it makes users confused:
why do we have both LucenePostList and LucenePostIterator?