Exemple #1
0
            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));
 }
Exemple #3
0
 // 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)));
 }
Exemple #4
0
 internal DoubleComparator(int numHits, System.String field, Mono.Lucene.Net.Search.Parser parser)
 {
     values      = new double[numHits];
     this.field  = field;
     this.parser = (DoubleParser)parser;
 }
Exemple #5
0
 /// <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));
 }
Exemple #6
0
			internal DoubleComparator(int numHits, System.String field, Mono.Lucene.Net.Search.Parser parser)
			{
				values = new double[numHits];
				this.field = field;
				this.parser = (DoubleParser) parser;
			}