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

Robert Muir commented on LUCENE-2876:
-------------------------------------

bq. You're right, I was for some reason under the impression that part of the 
reason for the change is that Weight already exposes Similarity but it is not, 
and I think it shouldn't, so current patch is good here.

Yes, mainly it was just to correct the inconsistencies:
* the base class does nothing with Similarity, and its often null, so i don't 
think it needs to know about it.
* the base class does however, provide functionality that depends on Weight, 
and I think it should be non-null to support that. We might want to expand on 
this functionality in the future too.

I wish i could have thrown IAE on null Weight (I did this to find all scorers 
that did not comply), but there is again
the one ValueSourceScorer in Solr that isn't easily fixed... at least the patch 
creates more consistency.

I'll review all javadocs for the scorers, and try to make sure the param 
documentation is up to date.

Thanks again for taking the time to review these scoring issues.


> Remove Scorer.getSimilarity()
> -----------------------------
>
>                 Key: LUCENE-2876
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2876
>             Project: Lucene - Java
>          Issue Type: Task
>          Components: Query/Scoring
>            Reporter: Robert Muir
>            Assignee: Robert Muir
>             Fix For: 3.1, 4.0
>
>         Attachments: LUCENE-2876.patch
>
>
> Originally this was part of the patch for per-field Similarity (LUCENE-2236), 
> but I pulled it 
> out here as its own issue as its really mostly unrelated. I also like it as a 
> separate issue 
> to apply the deprecation to branch_3x to just make less surprises/migration 
> hassles for 4.0 users.
> Currently Scorer takes a confusing number of ctors, either a Similarity, or a 
> Weight + Similarity.
> Also, lots of scorers don't use the Similarity at all, and its not really 
> needed in Scorer itself.
> Additionally, the Weight argument is often null. The Weight makes sense to be 
> here in Scorer, 
> its the parent that created the scorer, and used by Scorer itself to support 
> LUCENE-2590's features.
> But I dont think all queries work with this feature correctly right now, 
> because they pass null.
> Finally the situation gets confusing if you start to consider delegators like 
> ScoreCachingWrapperScorer,
> which arent really delegating correctly so I'm unsure features like 
> LUCENE-2590 aren't working with this.
> So I think we should remove the getSimilarity, if your scorer uses a 
> Similarity its already coming
> to you via your ctor from your Weight and you can manage this yourself.
> Also, all scorers should pass the Weight (parent) that created them, and this 
> should be Scorer's only ctor.
> I fixed all core/contrib/solr Scorers (even the internal ones) to pass their 
> parent Weight, just for consistency
> of this visitor interface. The only one that passes null is Solr's 
> ValueSourceScorer.
> I set fix-for 3.1, not because i want to backport anything, only to mark the 
> getSimilarity deprecated there.

-- 
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to