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

搜索引擎

开发平台:

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. using IndexReader = Lucene.Net.Index.IndexReader;
  18. namespace Lucene.Net.Search
  19. {
  20. /// <summary> Expert: Maintains caches of term values.
  21. /// 
  22. /// <p>Created: May 19, 2004 11:13:14 AM
  23. /// 
  24. /// </summary>
  25. /// <author>   Tim Jones (Nacimiento Software)
  26. /// </author>
  27. /// <since>   lucene 1.4
  28. /// </since>
  29. /// <version>  $Id: FieldCache.java 179605 2005-06-02 16:48:40Z cutting $
  30. /// </version>
  31. /// <summary>Expert: Stores term text values and document ordering data. </summary>
  32. public class StringIndex
  33. {
  34. /// <summary>All the term values, in natural order. </summary>
  35. public System.String[] lookup;
  36. /// <summary>For each document, an index into the lookup array. </summary>
  37. public int[] order;
  38. /// <summary>Creates one of these objects </summary>
  39. public StringIndex(int[] values, System.String[] lookup)
  40. {
  41. this.order = values;
  42. this.lookup = lookup;
  43. }
  44. }
  45. public struct FieldCache_Fields
  46. {
  47. /// <summary>Indicator for StringIndex values in the cache. </summary>
  48. // NOTE: the value assigned to this constant must not be
  49. // the same as any of those in SortField!!
  50. public readonly static int STRING_INDEX = - 1;
  51. /// <summary>Expert: The cache used internally by sorting and range query classes. </summary>
  52. public readonly static FieldCache DEFAULT;
  53. static FieldCache_Fields()
  54. {
  55. DEFAULT = new FieldCacheImpl();
  56. }
  57. }
  58. public interface FieldCache
  59. {
  60. /// <summary>Checks the internal cache for an appropriate entry, and if none is
  61. /// found, reads the terms in <code>field</code> as integers and returns an array
  62. /// of size <code>reader.maxDoc()</code> of the value each document
  63. /// has in the given field.
  64. /// </summary>
  65. /// <param name="reader"> Used to get field values.
  66. /// </param>
  67. /// <param name="field">  Which field contains the integers.
  68. /// </param>
  69. /// <returns> The values in the given field for each document.
  70. /// </returns>
  71. /// <throws>  IOException  If any error occurs. </throws>
  72. int[] GetInts(IndexReader reader, System.String field);
  73. /// <summary>Checks the internal cache for an appropriate entry, and if none is found,
  74. /// reads the terms in <code>field</code> as integers and returns an array of
  75. /// size <code>reader.maxDoc()</code> of the value each document has in the
  76. /// given field.
  77. /// </summary>
  78. /// <param name="reader"> Used to get field values.
  79. /// </param>
  80. /// <param name="field">  Which field contains the integers.
  81. /// </param>
  82. /// <param name="parser"> Computes integer for string values.
  83. /// </param>
  84. /// <returns> The values in the given field for each document.
  85. /// </returns>
  86. /// <throws>  IOException  If any error occurs. </throws>
  87. int[] GetInts(IndexReader reader, System.String field, IntParser parser);
  88. /// <summary>Checks the internal cache for an appropriate entry, and if
  89. /// none is found, reads the terms in <code>field</code> as floats and returns an array
  90. /// of size <code>reader.maxDoc()</code> of the value each document
  91. /// has in the given field.
  92. /// </summary>
  93. /// <param name="reader"> Used to get field values.
  94. /// </param>
  95. /// <param name="field">  Which field contains the floats.
  96. /// </param>
  97. /// <returns> The values in the given field for each document.
  98. /// </returns>
  99. /// <throws>  IOException  If any error occurs. </throws>
  100. float[] GetFloats(IndexReader reader, System.String field);
  101. /// <summary>Checks the internal cache for an appropriate entry, and if
  102. /// none is found, reads the terms in <code>field</code> as floats and returns an array
  103. /// of size <code>reader.maxDoc()</code> of the value each document
  104. /// has in the given field.
  105. /// </summary>
  106. /// <param name="reader"> Used to get field values.
  107. /// </param>
  108. /// <param name="field">  Which field contains the floats.
  109. /// </param>
  110. /// <param name="parser"> Computes float for string values.
  111. /// </param>
  112. /// <returns> The values in the given field for each document.
  113. /// </returns>
  114. /// <throws>  IOException  If any error occurs. </throws>
  115. float[] GetFloats(IndexReader reader, System.String field, FloatParser parser);
  116. /// <summary>Checks the internal cache for an appropriate entry, and if none
  117. /// is found, reads the term values in <code>field</code> and returns an array
  118. /// of size <code>reader.maxDoc()</code> containing the value each document
  119. /// has in the given field.
  120. /// </summary>
  121. /// <param name="reader"> Used to get field values.
  122. /// </param>
  123. /// <param name="field">  Which field contains the strings.
  124. /// </param>
  125. /// <returns> The values in the given field for each document.
  126. /// </returns>
  127. /// <throws>  IOException  If any error occurs. </throws>
  128. System.String[] GetStrings(IndexReader reader, System.String field);
  129. /// <summary>Checks the internal cache for an appropriate entry, and if none
  130. /// is found reads the term values in <code>field</code> and returns
  131. /// an array of them in natural order, along with an array telling
  132. /// which element in the term array each document uses.
  133. /// </summary>
  134. /// <param name="reader"> Used to get field values.
  135. /// </param>
  136. /// <param name="field">  Which field contains the strings.
  137. /// </param>
  138. /// <returns> Array of terms and index into the array for each document.
  139. /// </returns>
  140. /// <throws>  IOException  If any error occurs. </throws>
  141. StringIndex GetStringIndex(IndexReader reader, System.String field);
  142. /// <summary>Checks the internal cache for an appropriate entry, and if
  143. /// none is found reads <code>field</code> to see if it contains integers, floats
  144. /// or strings, and then calls one of the other methods in this class to get the
  145. /// values.  For string values, a StringIndex is returned.  After
  146. /// calling this method, there is an entry in the cache for both
  147. /// type <code>AUTO</code> and the actual found type.
  148. /// </summary>
  149. /// <param name="reader"> Used to get field values.
  150. /// </param>
  151. /// <param name="field">  Which field contains the values.
  152. /// </param>
  153. /// <returns> int[], float[] or StringIndex.
  154. /// </returns>
  155. /// <throws>  IOException  If any error occurs. </throws>
  156. System.Object GetAuto(IndexReader reader, System.String field);
  157. /// <summary>Checks the internal cache for an appropriate entry, and if none
  158. /// is found reads the terms out of <code>field</code> and calls the given SortComparator
  159. /// to get the sort values.  A hit in the cache will happen if <code>reader</code>,
  160. /// <code>field</code>, and <code>comparator</code> are the same (using <code>equals()</code>)
  161. /// as a previous call to this method.
  162. /// </summary>
  163. /// <param name="reader"> Used to get field values.
  164. /// </param>
  165. /// <param name="field">  Which field contains the values.
  166. /// </param>
  167. /// <param name="comparator">Used to convert terms into something to sort by.
  168. /// </param>
  169. /// <returns> Array of sort objects, one for each document.
  170. /// </returns>
  171. /// <throws>  IOException  If any error occurs. </throws>
  172. System.IComparable[] GetCustom(IndexReader reader, System.String field, SortComparator comparator);
  173. }
  174.     /// <summary>Interface to parse ints from document fields.</summary>
  175. /// <seealso cref="GetInts(IndexReader, String, IntParser)">
  176. /// </seealso>
  177. public interface IntParser
  178. {
  179. /// <summary>Return an integer representation of this field's value. </summary>
  180. int ParseInt(System.String string_Renamed);
  181. }
  182.     /// <summary>Interface to parse floats from document fields.</summary>
  183. /// <seealso cref="GetFloats(IndexReader, String, FloatParser)">
  184. /// </seealso>
  185. public interface FloatParser
  186. {
  187. /// <summary>Return an float representation of this field's value. </summary>
  188. float ParseFloat(System.String string_Renamed);
  189. }
  190. }