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

Yonik Seeley commented on LUCENE-2831:
--------------------------------------

{quote}I think we should add the sub-ReaderInfos too, so the tree is
doubly-linked?
{quote}

Yeah, sounds like a good idea.  Solr currently has this functionality via 
SolrIndexReader (all lucene readers in the tree are wrapped on every reopen), 
and every SolrIndexReader has the list of children, and a parent pointer.  So 
this is turning into the same thing, just with a parallel data structure (which 
mirrors the actual reader tree) instead of wrapping.

{quote} Actually I think we can and should store this in IndexReader?

But, only the top-level reader is allowed to hold ReaderInfo for all
subs it [recurisvely] contains. 
{quote}

A top level reader may also be a sub-reader of another top level reader... so 
it doesn't seem
like we can make that restriction, and any ReaderInfo stored on an IndexReader 
would only be valid
in some contexts.  Think about simply trying to walk up to the top level 
reader, or using "offset"
or "ord' which vary depending on the top-level reader.

And if that info is passed down to weight() and scorer() anyway, what's the 
point of storing it on IR?
I guess if we made the restriction that things that vary depending on top-level 
reader should be avoided
in ReaderInfo if obtained directly from an IndexReader, it would be OK.  But 
that's a severe and strange restriction.

We can try approaching it from the other direction too... what is gained or 
made easier by storing ReaderInfo on IR?  What are the usecases?


> Revise Weight#scorer & Filter#getDocIdSet API to pass Readers context
> ---------------------------------------------------------------------
>
>                 Key: LUCENE-2831
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2831
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: Search
>    Affects Versions: 4.0
>            Reporter: Simon Willnauer
>            Assignee: Simon Willnauer
>             Fix For: 4.0
>
>         Attachments: LUCENE-2831.patch
>
>
> Spinoff from LUCENE-2694 - instead of passing a reader into Weight#scorer(IR, 
> boolean, boolean) we should / could revise the API and pass in a struct that 
> has parent reader, sub reader, ord of that sub. The ord mapping plus the 
> context with its parent would make several issues way easier. See 
> LUCENE-2694, LUCENE-2348 and LUCENE-2829 to name some.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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

Reply via email to