: One problem is that not() needs to know how large the sets are. I : could add a DocSet.flip(int maxDoc) or a DocSet.flip(int startIndex, : int endIndex) or something like that... but a user would need to know : what maxDoc is...
alternately, we could make maxDoc an intrinsic and immutable part of the DocSet API ... as an "int getMaxSize()" method in the interface perhaps. The various constructors for the implimenting clases could require it as a constructor argument (unless they are being constructed from an existing impl, in which case they could just ask) in the context of a BitSet it makes a lot of sense to let the "max size" of the BitSet grow as needed ... but in the context of a Lucene index he number of docs that can ever posisbly be in a DocSet can never changed (if it des, the DocSet is invalid because ids may have moved) : DocSet.andNot(DocSet other) would be doable w/o knowledge of maxDoc though. yeah ... and getting a DocSet that matches all docs in the index would be easy enough using a MatchAllDocsQuery. -Hoss