add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / src / java / org / apache / lucene / analysis / LengthFilter.java
1 package org.apache.lucene.analysis;
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.analysis.tokenattributes.CharTermAttribute;
23
24 /**
25  * Removes words that are too long or too short from the stream.
26  * <p>
27  * Note: Length is calculated as the number of UTF-16 code units.
28  * </p>
29  */
30 public final class LengthFilter extends FilteringTokenFilter {
31
32   private final int min;
33   private final int max;
34   
35   private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
36
37   /**
38    * Build a filter that removes words that are too long or too
39    * short from the text.
40    */
41   public LengthFilter(boolean enablePositionIncrements, TokenStream in, int min, int max) {
42     super(enablePositionIncrements, in);
43     this.min = min;
44     this.max = max;
45   }
46   
47   /**
48    * Build a filter that removes words that are too long or too
49    * short from the text.
50    * @deprecated Use {@link #LengthFilter(boolean, TokenStream, int, int)} instead.
51    */
52   @Deprecated
53   public LengthFilter(TokenStream in, int min, int max) {
54     this(false, in, min, max);
55   }
56   
57   @Override
58   public boolean accept() throws IOException {
59     final int len = termAtt.length();
60     return (len >= min && len <= max);
61   }
62 }