Merge pull request #409 from Alkarex/patch-1
[mono.git] / mcs / tools / monkeydoc / Lucene.Net / Lucene.Net / Search / Payloads / MaxPayloadFunction.cs
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 Mono.Lucene.Net.Search.Payloads
21 {
22         
23         
24         /// <summary> Returns the maximum payload score seen, else 1 if there are no payloads on the doc.
25         /// <p/>
26         /// Is thread safe and completely reusable.
27         /// 
28         /// 
29         /// </summary>
30         [Serializable]
31         public class MaxPayloadFunction:PayloadFunction
32         {
33                 public override float CurrentScore(int docId, System.String field, int start, int end, int numPayloadsSeen, float currentScore, float currentPayloadScore)
34                 {
35             if (numPayloadsSeen == 0)
36             {
37                 return currentPayloadScore;
38             }
39             else
40             {
41                 return System.Math.Max(currentPayloadScore, currentScore);
42             }
43                 }
44                 
45                 public override float DocScore(int docId, System.String field, int numPayloadsSeen, float payloadScore)
46                 {
47                         return numPayloadsSeen > 0?payloadScore:1;
48                 }
49                 
50                 public override int GetHashCode()
51                 {
52                         int prime = 31;
53                         int result = 1;
54                         result = prime * result + this.GetType().GetHashCode();
55                         return result;
56                 }
57                 
58                 public  override bool Equals(System.Object obj)
59                 {
60                         if (this == obj)
61                                 return true;
62                         if (obj == null)
63                                 return false;
64                         if (GetType() != obj.GetType())
65                                 return false;
66                         return true;
67                 }
68         }
69 }