[ 
https://issues.apache.org/jira/browse/LUCENE-9051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16976571#comment-16976571
 ] 

Michael Sokolov commented on LUCENE-9051:
-----------------------------------------

Sure, but I'd like to understand the rationale for forking. It seems like we'd 
end up with a lot of unneccessary code duplication. Why do we see implementing 
{{DocIdSetIterator}} as preventing a class from *also* implementing random 
access, as {{DocValuesIterator}} seems to offer with its {{advanceExact}}?

> Implement random access seeks in IndexedDISI (DocValues)
> --------------------------------------------------------
>
>                 Key: LUCENE-9051
>                 URL: https://issues.apache.org/jira/browse/LUCENE-9051
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Michael Sokolov
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> In LUCENE-9004 we have a use case for random-access seeking in DocValues, 
> which currently only support forward-only iteration (with efficient 
> skipping). One idea there was to write an entirely new format to cover these 
> cases. While looking into that, I noticed that our current DocValues 
> addressing implementation, {{IndexedDISI}}, already has a pretty good basis 
> for providing random accesses. I worked up a patch that does that; we already 
> have the ability to jump to a block, thanks to the jump-tables added last 
> year by [~toke]; the patch uses that, and/or rewinds the iteration within 
> current block as needed.
> I did a very simple performance test, comparing forward-only iteration with 
> random seeks, and in my test I saw no difference, but that can't be right, so 
> I wonder if we have a more thorough performance test of DocValues somwhere 
> that I could repurpose. Probably I'll go back and dig into the issue where we 
> added the jump tables - I seem to recall some testing was done then.
> Aside from performance testing the implementation, there is the question 
> should we alter our API guarantees in this way. This might be controversial, 
> I don't know the history or all the reasoning behind the way it is today. We 
> provide {{advanceExact}} and some implementations support docids going 
> backwards, others don't.  {{AssertingNumericDocValues.advanceExact}} does  
> enforce forward-iteration (in tests); what would the consequence be of 
> relaxing that? We'd then open ourselves up to requiring all DV impls to 
> support random access. Are there other impls to worry about though? I'm not 
> sure. I'd appreciate y'all's input on this one.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to