add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / src / java / org / apache / lucene / search / PrefixTermEnum.java
1 package org.apache.lucene.search;
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 import java.io.IOException;
21
22 import org.apache.lucene.index.IndexReader;
23 import org.apache.lucene.index.Term;
24
25 /**
26  * Subclass of FilteredTermEnum for enumerating all terms that match the
27  * specified prefix filter term.
28  * <p>
29  * Term enumerations are always ordered by Term.compareTo().  Each term in
30  * the enumeration is greater than all that precede it.
31  *
32  */
33 public class PrefixTermEnum extends FilteredTermEnum {
34
35   private final Term prefix;
36   private boolean endEnum = false;
37
38   public PrefixTermEnum(IndexReader reader, Term prefix) throws IOException {
39     this.prefix = prefix;
40
41     setEnum(reader.terms(new Term(prefix.field(), prefix.text())));
42   }
43
44   @Override
45   public float difference() {
46     return 1.0f;
47   }
48
49   @Override
50   protected boolean endEnum() {
51     return endEnum;
52   }
53   
54   protected Term getPrefixTerm() {
55       return prefix;
56   }
57
58   @Override
59   protected boolean termCompare(Term term) {
60     if (term.field() == prefix.field() && term.text().startsWith(prefix.text())) {                                                                              
61       return true;
62     }
63     endEnum = true;
64     return false;
65   }
66 }