msokolov commented on issue #9721:
URL: https://github.com/apache/lucene/issues/9721#issuecomment-2078030793

   I started to play around with a hacky implementation that:
   
   1. adds docid interval [start, end] to `LeafReaderContext`
   2. modifies IndexSearcher so it creates these "searcher" leaves and puts 
these in its slices instead of the reader's leaf contexts
   3. wraps every query in an IntervalQuery whose scorer uses a 
BoundedDocIdSetIterator (we already have this elsewhere as an inner class; I 
just pulled it out to top level).
   
   I don't claim this is a good API design, but it mostly just works and I just 
wanted to do the least work possible to enable this using (mostly) existing 
APIs to see what the impact would be on our application. I found the initial 
implementation in Lucene to be pretty straightforward, but in our application 
it seems we tie a *lot* of things to reader leaves that now have to be tied to 
searcher leaves, and these tend to be stored in arrays based on the number of 
leaves which now would not be viable - I expect an IndexSearcher might want to 
dynamically vary the way it slices an index? I guess the main learning I have 
from that is that we do want to have an explicit API change reflecting this - 
otherwise it is easy to fall into traps where everything compiles and seems 
fine, but things are actually quite broken - eg formerly you expected only a 
single thread to be accessing your per-leaf data structures, but now multiple 
ones can. Also @stefanvodita pointed me to Luca's branch https:/
 /github.com/javanna/lucene/commit/6ca5680c94452f02d38bd0a5ba881da9ae950bae 
which seems to have a somewhat cleaner API.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to