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

搜索引擎

开发平台:

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> Loader for text files that represent a list of stopwords.
  20. /// 
  21. /// </summary>
  22. /// <author>  Gerhard Schwarz
  23. /// </author>
  24. /// <version>  $Id: WordlistLoader.java 192989 2005-06-22 19:59:03Z dnaber $
  25. /// </version>
  26. public class WordlistLoader
  27. {
  28. /// <summary> Loads a text file and adds every line as an entry to a HashSet (omitting
  29. /// leading and trailing whitespace). Every line of the file should contain only
  30. /// one word. The words need to be in lowercase if you make use of an
  31. /// Analyzer which uses LowerCaseFilter (like StandardAnalyzer).
  32. /// 
  33. /// </summary>
  34. /// <param name="wordfile">File containing the wordlist
  35. /// </param>
  36. /// <returns> A HashSet with the file's words
  37. /// </returns>
  38. public static System.Collections.Hashtable GetWordSet(System.IO.FileInfo wordfile)
  39. {
  40. System.Collections.Hashtable result = new System.Collections.Hashtable();
  41. System.IO.TextReader reader = null;
  42. try
  43. {
  44. reader = new System.IO.StreamReader(wordfile.FullName, System.Text.Encoding.Default);
  45. result = GetWordSet(reader);
  46. }
  47. finally
  48. {
  49. if (reader != null)
  50. reader.Close();
  51. }
  52. return result;
  53. }
  54. /// <summary> Reads lines from a Reader and adds every line as an entry to a HashSet (omitting
  55. /// leading and trailing whitespace). Every line of the Reader should contain only
  56. /// one word. The words need to be in lowercase if you make use of an
  57. /// Analyzer which uses LowerCaseFilter (like StandardAnalyzer).
  58. /// 
  59. /// </summary>
  60. /// <param name="reader">Reader containing the wordlist
  61. /// </param>
  62. /// <returns> A HashSet with the reader's words
  63. /// </returns>
  64. public static System.Collections.Hashtable GetWordSet(System.IO.TextReader reader)
  65. {
  66. System.Collections.Hashtable result = new System.Collections.Hashtable();
  67. System.IO.TextReader br = null;
  68. try
  69. {
  70. br = (System.IO.TextReader) reader;
  71. System.String word = null;
  72. while ((word = br.ReadLine()) != null)
  73. {
  74.                     System.String tmp = word.Trim();
  75. result.Add(tmp, tmp);
  76. }
  77. }
  78. finally
  79. {
  80. if (br != null)
  81. br.Close();
  82. }
  83. return result;
  84. }
  85. /// <param name="path">     Path to the wordlist
  86. /// </param>
  87. /// <param name="wordfile"> Name of the wordlist
  88. /// 
  89. /// </param>
  90. /// <deprecated> Use {@link #GetWordSet(File)} instead
  91. /// </deprecated>
  92. public static System.Collections.Hashtable GetWordtable(System.String path, System.String wordfile)
  93. {
  94. return GetWordtable(new System.IO.FileInfo(path + "\" + wordfile));
  95. }
  96. /// <param name="wordfile"> Complete path to the wordlist
  97. /// 
  98. /// </param>
  99. /// <deprecated> Use {@link #GetWordSet(File)} instead
  100. /// </deprecated>
  101. public static System.Collections.Hashtable GetWordtable(System.String wordfile)
  102. {
  103. return GetWordtable(new System.IO.FileInfo(wordfile));
  104. }
  105. /// <param name="wordfile"> File object that points to the wordlist
  106. /// 
  107. /// </param>
  108. /// <deprecated> Use {@link #GetWordSet(File)} instead
  109. /// </deprecated>
  110. public static System.Collections.Hashtable GetWordtable(System.IO.FileInfo wordfile)
  111. {
  112. System.Collections.Hashtable wordSet = (System.Collections.Hashtable) GetWordSet(wordfile);
  113. System.Collections.Hashtable result = MakeWordTable(wordSet);
  114. return result;
  115. }
  116. /// <summary> Builds a wordlist table, using words as both keys and values
  117. /// for backward compatibility.
  118. /// 
  119. /// </summary>
  120. /// <param name="wordSet">  stopword set
  121. /// </param>
  122. private static System.Collections.Hashtable MakeWordTable(System.Collections.Hashtable wordSet)
  123. {
  124. System.Collections.Hashtable table = System.Collections.Hashtable.Synchronized(new System.Collections.Hashtable());
  125. for (System.Collections.IEnumerator iter = wordSet.GetEnumerator(); iter.MoveNext(); )
  126. {
  127. System.String word = (System.String) iter.Current;
  128. table[word] = word;
  129. }
  130. return table;
  131. }
  132. }
  133. }