add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / src / java / org / apache / lucene / search / SingleTermEnum.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 a single term.
27  * <p>
28  * This can be used by {@link MultiTermQuery}s that need only visit one term,
29  * but want to preserve MultiTermQuery semantics such as
30  * {@link MultiTermQuery#rewriteMethod}.
31  */
32 public class SingleTermEnum extends FilteredTermEnum {
33   private Term singleTerm;
34   private boolean endEnum = false;
35   
36   /**
37    * Creates a new <code>SingleTermEnum</code>.
38    * <p>
39    * After calling the constructor the enumeration is already pointing to the term,
40    * if it exists.
41    */
42   public SingleTermEnum(IndexReader reader, Term singleTerm) throws IOException {
43     super();
44     this.singleTerm = singleTerm;
45     setEnum(reader.terms(singleTerm));
46   }
47
48   @Override
49   public float difference() {
50     return 1.0F;
51   }
52
53   @Override
54   protected boolean endEnum() {
55     return endEnum;
56   }
57
58   @Override
59   protected boolean termCompare(Term term) {
60     if (term.equals(singleTerm)) {
61       return true;
62     } else {
63       endEnum = true;
64       return false;
65     }
66   }
67 }