LengthFilter.cs
上传用户:zhangkuixh
上传日期:2013-09-30
资源大小:5473k
文件大小:2k
源码类别:

搜索引擎

开发平台:

C#

  1. /*
  2.  * Copyright 2004 The Apache Software Foundation
  3.  * 
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  * 
  8.  * http://www.apache.org/licenses/LICENSE-2.0
  9.  * 
  10.  * Unless required by applicable law or agreed to in writing, software
  11.  * distributed under the License is distributed on an "AS IS" BASIS,
  12.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  * See the License for the specific language governing permissions and
  14.  * limitations under the License.
  15.  */
  16. using System;
  17. namespace Lucene.Net.Analysis
  18. {
  19. /// <summary> Removes words that are too long and too short from the stream.
  20. /// 
  21. /// </summary>
  22. /// <author>  David Spencer
  23. /// </author>
  24. /// <version>  $Id: LengthFilter.java 347992 2005-11-21 21:41:43Z dnaber $
  25. /// </version>
  26. public sealed class LengthFilter : TokenFilter
  27. {
  28. internal int min;
  29. internal int max;
  30. /// <summary> Build a filter that removes words that are too long or too
  31. /// short from the text.
  32. /// </summary>
  33. public LengthFilter(TokenStream in_Renamed, int min, int max) : base(in_Renamed)
  34. {
  35. this.min = min;
  36. this.max = max;
  37. }
  38. /// <summary> Returns the next input Token whose termText() is the right len</summary>
  39. public override Token Next()
  40. {
  41. // return the first non-stop word found
  42. for (Token token = input.Next(); token != null; token = input.Next())
  43. {
  44. int len = token.TermText().Length;
  45. if (len >= min && len <= max)
  46. {
  47. return token;
  48. }
  49. // note: else we ignore it but should we index each part of it?
  50. }
  51. // reached EOS -- return null
  52. return null;
  53. }
  54. }
  55. }