Lucene.Net  3.0.3
Lucene.Net is a port of the Lucene search engine library, written in C# and targeted at .NET runtime users.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Pages
PositionFilter.cs
Go to the documentation of this file.
1 /*
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements. See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership. The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with 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,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied. See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20 */
21 
22 using System;
23 using System.Collections.Generic;
24 using System.Linq;
25 using System.Text;
26 using Lucene.Net.Analysis.Tokenattributes;
27 
28 namespace Lucene.Net.Analysis.Position
29 {
30  /* Set the positionIncrement of all tokens to the "positionIncrement",
31  * except the first return token which retains its original positionIncrement value.
32  * The default positionIncrement value is zero.
33  */
34  public sealed class PositionFilter : TokenFilter
35  {
36 
37  /* Position increment to assign to all but the first token - default = 0 */
38  private int positionIncrement = 0;
39 
40  /* The first token must have non-zero positionIncrement **/
41  private bool firstTokenPositioned = false;
42 
43  private IPositionIncrementAttribute posIncrAtt;
44 
45  /*
46  * Constructs a PositionFilter that assigns a position increment of zero to
47  * all but the first token from the given input stream.
48  *
49  * @param input the input stream
50  */
52  : base(input)
53  {
54  posIncrAtt = AddAttribute<IPositionIncrementAttribute>();
55  }
56 
57  /*
58  * Constructs a PositionFilter that assigns the given position increment to
59  * all but the first token from the given input stream.
60  *
61  * @param input the input stream
62  * @param positionIncrement position increment to assign to all but the first
63  * token from the input stream
64  */
65  public PositionFilter(TokenStream input, int positionIncrement)
66  : this(input)
67  {
68  this.positionIncrement = positionIncrement;
69  }
70 
71  public sealed override bool IncrementToken()
72  {
73  if (input.IncrementToken())
74  {
75  if (firstTokenPositioned)
76  {
77  posIncrAtt.PositionIncrement = positionIncrement;
78  }
79  else
80  {
81  firstTokenPositioned = true;
82  }
83  return true;
84  }
85  else
86  {
87  return false;
88  }
89  }
90 
91  public override void Reset()
92  {
93  base.Reset();
94  firstTokenPositioned = false;
95  }
96  }
97 }