Hi guys: We have been building a suite of boolean operators DocIdSets (e.g. AndDocIdSet/Iterator, OrDocIdSet/Iterator, NotDocIdSet/Iterator). We compared our implementation on the OrDocIdSetIterator (based on DisjunctionMaxScorer code) with some code tuning, and we see the performance doubled in our testing. (we haven't done comparisons with ConjuctionScorer vs. AndDocIdSetIterator, will post numbers when we do)
We'd be happy to contribute this back to the community. But what is the best way of going about it? option 1: merge our change into DisjunctionMax/SumScorers. option 2: contribute boolean operator sets, and have DisjunctionScorers derive from OrDocIdSetIterator, ConjunctionScorer derive from AndDocIdSetIterator etc. Option 2 seems to be cleaner. Thoughts? Thanks -John