Make sure you fix the whitespace – some indents are now tabs or 8
spaces, but should be 2.
I believe the common use will be few PPs that handle few terms.
Or, maybe even more common will be per-Directory switching and
ignoring the Term? EG if I changed my payload format (for all terms)
at some point...
Though we don't have great support for versioning of payloads during
searching... eg PayloadTermQuery doesn't make it simple to figure out
which Dir you are now searching...
My only concern w/ this API is that it has a built-in unnecessary
global perf/synchronization cost, by design: I'll have to use a sync'd
map or a thread local to implement that method. Even if my app
ignores the Term, I'll need to sync. This sync is global – all
merges running concurrently, per Term, will share a single global
But it's only the Dir lookup that requires sync.
So if, instead, the Dir lookup and the Term lookup were separate
method calls, I'd only need sync on the Dir lookup (called very rarely
often – once per segment on the start of the merge). The Term
lookup, called far far more often, is guaranteed to be thread private
so it'd need no sync.
I guess in practice the sync cost may not be such a big deal? So
maybe we could commit w/ this approach (it is experimental), even with
this limitation? It's just that I don't like adding APIs which make
our concurrency worse... we are supposed to be moving in the other