lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Simon Willnauer (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (LUCENE-2831) Revise Weight#scorer & Filter#getDocIdSet API to pass Readers context
Date Thu, 23 Dec 2010 16:16:04 GMT

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

Simon Willnauer edited comment on LUCENE-2831 at 12/23/10 11:13 AM:
--------------------------------------------------------------------

here is an initial patch that cuts over the API to use a ReaderInfo struct. I upload that
patch to get initial feedback for this rather massive change. Before i fix all JavaDoc etc.
some others should review that first. The patch contains the following changes:

 * Cut over to use ReaderInfo in Weight#scorer, Weight#explain & Filter.getDocIdSet
 * Added ReaderInfo[] to IndexReader and its subclasses as well as IndexSearcher and Searcher
which just forwards if applicable.
 * Fixed several, IMO legacy implementations in Solr code that still fixed the doc offset
in explain
 * Removed all uses of SolrIndexReader#leaveReaders outside of SIR - IMO we can make those
private to SIR now.
 * Added a DummySearcher to QueryWrapperFilter since it uses the subreader to obtain the weight
from a query. That didn't work anymore since I assert now that
  the parent readers are identical in Weight#scorer
 * cut over IndexSearcher to use ReaderInfo instead of seq. subreader

What is definitly missing here from my point of view is:

 * sharpen the javadoc in weight, filter, and query to make clear how Weight, Rewrite &
Scorer play together. For instance it should be clear that a query should only be executed
against the same reader it was rewritten against.
 * possibly revise the getSeqSub & getSeqDocBase API in IR and maybe merge then in ReaderInfo
 * We should think about what we need in Scorer and Filter before we commit since this already
changes the interface so we can do it here though. For instance could we include a _needsScoring_
flag in either Query#weight() or in the Weight#scorer() method. One other way would be to
add those flags to the struct 
that is passed in but that would mean that we can not simply bind them to the IR and use them
from there.
* maybe think about the name ReaderContext sounds also good instead  of ReaderInfo
 

comments welcome!!

      was (Author: simonw):
    here is an initial patch that cuts over the API to use a ReaderInfo struct. I upload that
patch to get initial feedback for this rather massive change. Before i fix all JavaDoc etc.
some others should review that first. The patch contains the following changes:

 * Cut over to use ReaderInfo in Weight#scorer, Weight#explain & Filter.getDocIdSet
 * Added ReaderInfo[] to IndexReader and its subclasses as well as IndexSearcher and Searcher
which just forwards if applicable.
 * Fixed several, IMO legacy implementations in Solr code that still fixed the doc offset
in explain
 * Removed all uses of SolrIndexReader#leaveReaders outside of SIR - IMO we can make those
private to SIR now.
 * Added a DummySearcher to QueryWrapperFilter since it uses the subreader to obtain the weight
from a query. That didn't work anymore since I assert now that
  the parent readers are identical in Weight#scorer
 * cut over IndexSearcher to use ReaderInfo instead of seq. subreader

What is definitly missing here from my point of view is:

 * sharpen the javadoc in weight, filter, and query to make clear how Weight, Rewrite &
Scorer play together. For instance it should be clear that a query should only be executed
against the same reader it was rewritten against.
 * possibly revise the getSeqSub & getSeqDocBase API in IR and maybe merge then in ReaderInfo
 * We should think about what we need in Scorer and Filter before we commit since this already
changes the interface so we can do it here though. For instance could we include a _needsScoring_
flag in either Query#weight() or in the Weight#scorer() method. One other way would be to
add those flags to the struct 
that is passed in but that would mean that we can not simply bind them to the IR and use them
from there.
 

comments welcome!!
  
> 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-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message