add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / src / java / org / apache / lucene / search / payloads / AveragePayloadFunction.java
1 package org.apache.lucene.search.payloads;
2
3 import org.apache.lucene.search.Explanation;
4 /**
5  * Licensed to the Apache Software Foundation (ASF) under one or more
6  * contributor license agreements.  See the NOTICE file distributed with
7  * this work for additional information regarding copyright ownership.
8  * The ASF licenses this file to You under the Apache License, Version 2.0
9  * (the "License"); you may not use this file except in compliance with
10  * the License.  You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20
21
22 /**
23  * Calculate the final score as the average score of all payloads seen.
24  * <p/>
25  * Is thread safe and completely reusable. 
26  *
27  **/
28 public class AveragePayloadFunction extends PayloadFunction{
29
30   @Override
31   public float currentScore(int docId, String field, int start, int end, int numPayloadsSeen, float currentScore, float currentPayloadScore) {
32     return currentPayloadScore + currentScore;
33   }
34
35   @Override
36   public float docScore(int docId, String field, int numPayloadsSeen, float payloadScore) {
37     return numPayloadsSeen > 0 ? (payloadScore / numPayloadsSeen) : 1;
38   }
39   @Override
40   public Explanation explain(int doc, int numPayloadsSeen, float payloadScore) {
41       Explanation payloadBoost = new Explanation();
42       float avgPayloadScore = (numPayloadsSeen > 0 ? (payloadScore / numPayloadsSeen) : 1);
43       payloadBoost.setValue(avgPayloadScore);
44       payloadBoost.setDescription("AveragePayloadFunction(...)");
45       return payloadBoost;
46   } 
47
48   @Override
49   public int hashCode() {
50     final int prime = 31;
51     int result = 1;
52     result = prime * result + this.getClass().hashCode();
53     return result;
54   }
55
56   @Override
57   public boolean equals(Object obj) {
58     if (this == obj)
59       return true;
60     if (obj == null)
61       return false;
62     if (getClass() != obj.getClass())
63       return false;
64     return true;
65   }
66 }