2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
20 namespace Mono.Lucene.Net.Search
23 /// <summary> A {@link Scorer} which wraps another scorer and caches the score of the
24 /// current document. Successive calls to {@link #Score()} will return the same
25 /// result and will not invoke the wrapped Scorer's score() method, unless the
26 /// current document has changed.<br/>
27 /// This class might be useful due to the changes done to the {@link Collector}
28 /// interface, in which the score is not computed for a document by default, only
29 /// if the collector requests it. Some collectors may need to use the score in
30 /// several places, however all they have in hand is a {@link Scorer} object, and
31 /// might end up computing the score of a document more than once.
33 public class ScoreCachingWrappingScorer:Scorer
36 private Scorer scorer;
37 private int curDoc = - 1;
38 private float curScore;
40 /// <summary>Creates a new instance by wrapping the given scorer. </summary>
41 public ScoreCachingWrappingScorer(Scorer scorer):base(scorer.GetSimilarity())
46 public /*protected internal*/ override bool Score(Collector collector, int max, int firstDocID)
48 return scorer.Score(collector, max, firstDocID);
51 public override Similarity GetSimilarity()
53 return scorer.GetSimilarity();
56 public override Explanation Explain(int doc)
58 return scorer.Explain(doc);
61 public override float Score()
63 int doc = scorer.DocID();
66 curScore = scorer.Score();
73 /// <deprecated> use {@link #DocID()} instead.
75 [Obsolete("use DocID() instead.")]
76 public override int Doc()
81 public override int DocID()
83 return scorer.DocID();
86 /// <deprecated> use {@link #NextDoc()} instead.
88 [Obsolete("use NextDoc() instead.")]
89 public override bool Next()
94 public override int NextDoc()
96 return scorer.NextDoc();
99 public override void Score(Collector collector)
101 scorer.Score(collector);
104 /// <deprecated> use {@link #Advance(int)} instead.
106 [Obsolete("use Advance(int) instead.")]
107 public override bool SkipTo(int target)
109 return scorer.SkipTo(target);
112 public override int Advance(int target)
114 return scorer.Advance(target);