1
2
3
4
5 package org.galagosearch.core.retrieval.structured;
6
7 import org.galagosearch.tupleflow.Parameters;
8
9 /***
10 *
11 * @author trevor
12 */
13 public class FilteredCombinationIterator extends ScoreCombinationIterator {
14 public FilteredCombinationIterator(Parameters parameters, ScoreIterator[] childIterators) {
15 super(parameters, childIterators);
16 }
17
18 public int nextCandidate() {
19 int candidate = 0;
20
21 for (ScoreIterator iterator : iterators) {
22 if (iterator.isDone()) {
23 return Integer.MAX_VALUE;
24 }
25 candidate = Math.max(candidate, iterator.nextCandidate());
26 }
27
28 return candidate;
29 }
30
31 public boolean hasMatch(int document) {
32 for (ScoreIterator iterator : iterators) {
33 if (iterator.isDone() || !iterator.hasMatch(document)) {
34 return false;
35 }
36 }
37
38 return true;
39 }
40
41 public boolean isDone() {
42 for (ScoreIterator iterator : iterators) {
43 if (iterator.isDone()) {
44 return true;
45 }
46 }
47
48 return false;
49 }
50 }