You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Robert Muir (JIRA)" <ji...@apache.org> on 2017/11/16 12:58:00 UTC

[jira] [Commented] (LUCENE-6228) Do not expose full-fledged scorers in LeafCollector.setScorer

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

Robert Muir commented on LUCENE-6228:
-------------------------------------

The casts back to Scorer in some of the tests are concerning, because if code just does this then i'm not certain how much this abstraction is helping.

Can we try something like moving getChildren from Scorer to this interface (it can still have default empty implementation with a default method)? Then maybe the casts would be removed but also ChildScorer would be restricted (like mentioned in the description of the issue) from doing illegal stuff.

We should also check performance, its a bit scary to add interfaces here (maybe an abstract class is an alternative) and we should ensure that this patch isn't causing hotspot to go crazy because of FakeScorer and Scorer impls.

> Do not expose full-fledged scorers in LeafCollector.setScorer
> -------------------------------------------------------------
>
>                 Key: LUCENE-6228
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6228
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Adrien Grand
>            Assignee: Adrien Grand
>             Fix For: 5.2, 6.0
>
>         Attachments: LUCENE-6228.patch, LUCENE-6228.patch, LUCENE-6228.patch, LUCENE-6228.patch
>
>
> Currently LeafCollector.setScorer takes a Scorer, which I don't like because several methods should never be called in the context of a Collector (like nextDoc or advance).
> I think it's even more trappy for methods that might seem to work in some particular cases but will not work in the general case, like getChildren which will not work if you have a specialized BulkScorer or iterating over positions which will not work if you are in a MultiCollector and another leaf collector consumes positions too.
> So I think we should restrict what can be seen from a collector to avoid such traps.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

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