pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / contrib / facet / src / java / org / apache / lucene / facet / search / aggregator / ScoringAggregator.java
1 package org.apache.lucene.facet.search.aggregator;
2
3 /**
4  * Licensed to the Apache Software Foundation (ASF) under one or more
5  * contributor license agreements.  See the NOTICE file distributed with
6  * this work for additional information regarding copyright ownership.
7  * The ASF licenses this file to You under the Apache License, Version 2.0
8  * (the "License"); you may not use this file except in compliance with
9  * the License.  You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 /**
21  * An {@link Aggregator} which updates the weight of a category according to the
22  * scores of the documents it was found in.
23  * 
24  * @lucene.experimental
25  */
26 public class ScoringAggregator implements Aggregator {
27
28   private final float[] scoreArray;
29   private float score;
30   private final int hashCode;
31   
32   public ScoringAggregator(float[] counterArray) {
33     this.scoreArray = counterArray;
34     this.hashCode = scoreArray == null ? 0 : scoreArray.hashCode();
35   }
36
37   public void aggregate(int ordinal) {
38     scoreArray[ordinal] += score;
39   }
40
41   @Override
42   public boolean equals(Object obj) {
43     if (obj == null || obj.getClass() != this.getClass()) {
44       return false;
45     }
46     ScoringAggregator that = (ScoringAggregator) obj;
47     return that.scoreArray == this.scoreArray;
48   }
49
50   @Override
51   public int hashCode() {
52     return hashCode;
53   }
54
55   public void setNextDoc(int docid, float score) {
56     this.score = score;
57   }
58 }