/* * Copyright 2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using IndexReader = Lucene.Net.Index.IndexReader; namespace Lucene.Net.Search { /// Expert: Maintains caches of term values. /// ///

Created: May 19, 2004 11:13:14 AM /// ///

/// Tim Jones (Nacimiento Software) /// /// lucene 1.4 /// /// $Id: FieldCache.cs,v 1.2 2005/10/06 19:29:57 dsd Exp $ /// /// Expert: Stores term text values and document ordering data. public class StringIndex { /// All the term values, in natural order. public System.String[] lookup; /// For each document, an index into the lookup array. public int[] order; /// Creates one of these objects public StringIndex(int[] values, System.String[] lookup) { this.order = values; this.lookup = lookup; } } public struct FieldCache_Fields { /// Indicator for StringIndex values in the cache. // NOTE: the value assigned to this constant must not be // the same as any of those in SortField!! public readonly static int STRING_INDEX = - 1; /// Expert: The cache used internally by sorting and range query classes. public readonly static FieldCache DEFAULT; static FieldCache_Fields() { DEFAULT = new FieldCacheImpl(); } } public interface FieldCache { /// Indicator for StringIndex values in the cache. // NOTE: the value assigned to this constant must not be // the same as any of those in SortField!! //readonly static int STRING_INDEX = - 1; /// Expert: The cache used internally by sorting and range query classes. //readonly static FieldCache DEFAULT = new FieldCacheImpl(); /// Checks the internal cache for an appropriate entry, and if none is /// found, reads the terms in Field as integers and returns an array /// of size reader.maxDoc() of the value each document /// has in the given Field. /// /// Used to get Field values. /// /// Which Field contains the integers. /// /// The values in the given Field for each document. /// /// IOException If any error occurs. int[] GetInts(IndexReader reader, System.String field); /// Checks the internal cache for an appropriate entry, and if /// none is found, reads the terms in Field as floats and returns an array /// of size reader.maxDoc() of the value each document /// has in the given Field. /// /// Used to get Field values. /// /// Which Field contains the floats. /// /// The values in the given Field for each document. /// /// IOException If any error occurs. float[] GetFloats(IndexReader reader, System.String field); /// Checks the internal cache for an appropriate entry, and if none /// is found, reads the term values in Field and returns an array /// of size reader.maxDoc() containing the value each document /// has in the given Field. /// /// Used to get Field values. /// /// Which Field contains the strings. /// /// The values in the given Field for each document. /// /// IOException If any error occurs. System.String[] GetStrings(IndexReader reader, System.String field); /// Checks the internal cache for an appropriate entry, and if none /// is found reads the term values in Field and returns /// an array of them in natural order, along with an array telling /// which element in the term array each document uses. /// /// Used to get Field values. /// /// Which Field contains the strings. /// /// Array of terms and index into the array for each document. /// /// IOException If any error occurs. StringIndex GetStringIndex(IndexReader reader, System.String field); /// Checks the internal cache for an appropriate entry, and if /// none is found reads Field to see if it contains integers, floats /// or strings, and then calls one of the other methods in this class to get the /// values. For string values, a StringIndex is returned. After /// calling this method, there is an entry in the cache for both /// type AUTO and the actual found type. /// /// Used to get Field values. /// /// Which Field contains the values. /// /// int[], float[] or StringIndex. /// /// IOException If any error occurs. System.Object GetAuto(IndexReader reader, System.String field); /// Checks the internal cache for an appropriate entry, and if none /// is found reads the terms out of Field and calls the given SortComparator /// to get the sort values. A hit in the cache will happen if reader, /// Field, and comparator are the same (using equals()) /// as a previous call to this method. /// /// Used to get Field values. /// /// Which Field contains the values. /// /// Used to convert terms into something to sort by. /// /// Array of sort objects, one for each document. /// /// IOException If any error occurs. System.IComparable[] GetCustom(IndexReader reader, System.String field, SortComparator comparator); } }