After some more reading, the NoMergePolicy seems to mostly solve my problem.
I've configured my IndexWriterConfig with:
.setMaxBufferedDocs(Integer.MAX_VALUE)
.setRAMBufferSizeMB(Double.MAX_VALUE)
.setMergePolicy(NoMergePolicy.INSTANCE)
With this config I consistently end up with a n
Ok, so it sounds like if you want a very specific number of segments you
have to do a forceMerge at some point?
Is there some simple summary on how segments are formed in the first place?
Something like, "one segment is created every time you flush from an
IndexWriter"? Based on some experimenting
If you want an exact number of segments, create 64 indexes, each forceMerged to
one segment.
After that use MultiReader to create a view on all separate indexes.
MultiReaders's contents are always flattened to a list of those 64 indexes.
But keep in mind that this should only ever be done with *