protected internal override System.Object CreateValue(IndexReader reader, Entry entryKey) { Entry entry = (Entry)entryKey; System.String field = entry.field; Mono.Lucene.Net.Search.DoubleParser parser = (Mono.Lucene.Net.Search.DoubleParser)entry.custom; if (parser == null) { try { return(wrapper.GetDoubles(reader, field, Mono.Lucene.Net.Search.FieldCache_Fields.DEFAULT_DOUBLE_PARSER)); } catch (System.FormatException ne) { return(wrapper.GetDoubles(reader, field, Mono.Lucene.Net.Search.FieldCache_Fields.NUMERIC_UTILS_DOUBLE_PARSER)); } } double[] retArray = null; TermDocs termDocs = reader.TermDocs(); TermEnum termEnum = reader.Terms(new Term(field)); try { do { Term term = termEnum.Term(); if (term == null || (System.Object)term.Field() != (System.Object)field) { break; } double termval = parser.ParseDouble(term.Text()); if (retArray == null) { // late init retArray = new double[reader.MaxDoc()]; } termDocs.Seek(termEnum); while (termDocs.Next()) { retArray[termDocs.Doc()] = termval; } }while (termEnum.Next()); } catch (StopFillCacheException stop) { } finally { termDocs.Close(); termEnum.Close(); } if (retArray == null) { // no values retArray = new double[reader.MaxDoc()]; } return(retArray); }
/// <summary> Creates a numeric range query using {@link FieldCache#GetDoubles(IndexReader,String,FieldCache.DoubleParser)}. This works with all /// double fields containing exactly one numeric term in the field. The range can be half-open by setting one /// of the values to <code>null</code>. /// </summary> public static FieldCacheRangeFilter NewDoubleRange(System.String field, Mono.Lucene.Net.Search.DoubleParser parser, System.ValueType lowerVal, System.ValueType upperVal, bool includeLower, bool includeUpper) { return(new AnonymousClassFieldCacheRangeFilter6(field, parser, lowerVal, upperVal, includeLower, includeUpper)); }
// inherit javadocs public virtual double[] GetDoubles(IndexReader reader, System.String field, Mono.Lucene.Net.Search.DoubleParser parser) { return((double[])((Cache)caches[System.Type.GetType("System.Double")]).Get(reader, new Entry(field, parser))); }
internal DoubleComparator(int numHits, System.String field, Mono.Lucene.Net.Search.Parser parser) { values = new double[numHits]; this.field = field; this.parser = (DoubleParser)parser; }
/// <summary> Returns a comparator for sorting hits according to a field containing doubles.</summary> /// <param name="reader"> Index to use. /// </param> /// <param name="fieldname"> Fieldable containing float values. /// </param> /// <returns> Comparator for sorting hits. /// </returns> /// <throws> IOException If an error occurs reading the index. </throws> internal static ScoreDocComparator comparatorDouble(IndexReader reader, System.String fieldname, Mono.Lucene.Net.Search.DoubleParser parser) { System.String field = String.Intern(fieldname); double[] fieldOrder = Mono.Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetDoubles(reader, field, parser); return(new AnonymousClassScoreDocComparator5(fieldOrder)); }
internal DoubleComparator(int numHits, System.String field, Mono.Lucene.Net.Search.Parser parser) { values = new double[numHits]; this.field = field; this.parser = (DoubleParser) parser; }