Lucene.Net
3.0.3
Lucene.Net is a port of the Lucene search engine library, written in C# and targeted at .NET runtime users.
Main Page
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Properties
Pages
core
Search
ScoreCachingWrappingScorer.cs
Go to the documentation of this file.
1
/*
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
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
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.
16
*/
17
18
using
System;
19
20
namespace
Lucene.Net.Search
21
{
22
23
/// <summary> A <see cref="Scorer" /> which wraps another scorer and caches the score of the
24
/// current document. Successive calls to <see cref="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 <see cref="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 <see cref="Scorer" /> object, and
31
/// might end up computing the score of a document more than once.
32
/// </summary>
33
public
class
ScoreCachingWrappingScorer
:
Scorer
34
{
35
36
private
Scorer
scorer;
37
private
int
curDoc = - 1;
38
private
float
curScore;
39
40
/// <summary>Creates a new instance by wrapping the given scorer. </summary>
41
public
ScoreCachingWrappingScorer
(
Scorer
scorer):base(scorer.
Similarity
)
42
{
43
this.scorer = scorer;
44
}
45
46
public
/*protected internal*/
override
bool
Score(
Collector
collector,
int
max,
int
firstDocID)
47
{
48
return
scorer.
Score
(collector, max, firstDocID);
49
}
50
51
public
override
Similarity
Similarity
52
{
53
get
{
return
scorer.
Similarity
; }
54
}
55
56
public
override
float
Score()
57
{
58
int
doc = scorer.DocID();
59
if
(doc != curDoc)
60
{
61
curScore = scorer.Score();
62
curDoc = doc;
63
}
64
65
return
curScore;
66
}
67
68
public
override
int
DocID()
69
{
70
return
scorer.DocID();
71
}
72
73
public
override
int
NextDoc()
74
{
75
return
scorer.NextDoc();
76
}
77
78
public
override
void
Score(
Collector
collector)
79
{
80
scorer.Score(collector);
81
}
82
83
public
override
int
Advance(
int
target)
84
{
85
return
scorer.Advance(target);
86
}
87
}
88
}
Generated on Thu Jan 3 2013 02:34:12 for Lucene.Net by
1.8.3