Return-Path: Delivered-To: apmail-lucene-java-commits-archive@www.apache.org Received: (qmail 72629 invoked from network); 24 Apr 2009 17:59:26 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 24 Apr 2009 17:59:26 -0000 Received: (qmail 41705 invoked by uid 500); 24 Apr 2009 17:59:26 -0000 Delivered-To: apmail-lucene-java-commits-archive@lucene.apache.org Received: (qmail 41632 invoked by uid 500); 24 Apr 2009 17:59:25 -0000 Mailing-List: contact java-commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@lucene.apache.org Delivered-To: mailing list java-commits@lucene.apache.org Received: (qmail 41623 invoked by uid 99); 24 Apr 2009 17:59:25 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 24 Apr 2009 17:59:25 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 24 Apr 2009 17:59:25 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 11D5223889B9; Fri, 24 Apr 2009 17:59:05 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r768385 - in /lucene/java/trunk/src/java/org/apache/lucene/search: FieldValueHitQueue.java IndexSearcher.java SortField.java Date: Fri, 24 Apr 2009 17:59:04 -0000 To: java-commits@lucene.apache.org From: markrmiller@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090424175905.11D5223889B9@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: markrmiller Date: Fri Apr 24 17:59:04 2009 New Revision: 768385 URL: http://svn.apache.org/viewvc?rev=768385&view=rev Log: move detectType to SortField Modified: lucene/java/trunk/src/java/org/apache/lucene/search/FieldValueHitQueue.java lucene/java/trunk/src/java/org/apache/lucene/search/IndexSearcher.java lucene/java/trunk/src/java/org/apache/lucene/search/SortField.java Modified: lucene/java/trunk/src/java/org/apache/lucene/search/FieldValueHitQueue.java URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/search/FieldValueHitQueue.java?rev=768385&r1=768384&r2=768385&view=diff ============================================================================== --- lucene/java/trunk/src/java/org/apache/lucene/search/FieldValueHitQueue.java (original) +++ lucene/java/trunk/src/java/org/apache/lucene/search/FieldValueHitQueue.java Fri Apr 24 17:59:04 2009 @@ -20,8 +20,6 @@ import java.io.IOException; import org.apache.lucene.index.IndexReader; -import org.apache.lucene.index.Term; -import org.apache.lucene.index.TermEnum; import org.apache.lucene.util.PriorityQueue; /** @@ -31,7 +29,7 @@ * * This class will not resolve SortField.AUTO types, and expects the type * of all SortFields used for construction to already have been resolved. - * {@link #detectFieldType(IndexReader, String)} is a utility method which + * {@link SortField#detectFieldType(IndexReader, String)} is a utility method which * may be used for field type detection. * * NOTE: This API is experimental and might change in @@ -231,53 +229,4 @@ SortField[] getFields() { return fields; } - - /** Attempts to detect the given field type for an IndexReader. */ - static int detectFieldType(IndexReader reader, String fieldKey) throws IOException { - String field = fieldKey.intern(); - TermEnum enumerator = reader.terms(new Term(field)); - try { - Term term = enumerator.term(); - if (term == null) { - throw new RuntimeException("no terms in field " + field + " - cannot determine sort type"); - } - int ret = 0; - if (term.field() == field) { - String termtext = term.text().trim(); - - /** - * Java 1.4 level code: - - if (pIntegers.matcher(termtext).matches()) - return IntegerSortedHitQueue.comparator (reader, enumerator, field); - - else if (pFloats.matcher(termtext).matches()) - return FloatSortedHitQueue.comparator (reader, enumerator, field); - */ - - // Java 1.3 level code: - try { - Integer.parseInt (termtext); - ret = SortField.INT; - } catch (NumberFormatException nfe1) { - try { - Long.parseLong(termtext); - ret = SortField.LONG; - } catch (NumberFormatException nfe2) { - try { - Float.parseFloat (termtext); - ret = SortField.FLOAT; - } catch (NumberFormatException nfe3) { - ret = SortField.STRING; - } - } - } - } else { - throw new RuntimeException("field \"" + field + "\" does not appear to be indexed"); - } - return ret; - } finally { - enumerator.close(); - } - } } Modified: lucene/java/trunk/src/java/org/apache/lucene/search/IndexSearcher.java URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/search/IndexSearcher.java?rev=768385&r1=768384&r2=768385&view=diff ============================================================================== --- lucene/java/trunk/src/java/org/apache/lucene/search/IndexSearcher.java (original) +++ lucene/java/trunk/src/java/org/apache/lucene/search/IndexSearcher.java Fri Apr 24 17:59:04 2009 @@ -211,7 +211,7 @@ int type = field.getType(); // Resolve AUTO into its true type if (type == SortField.AUTO) { - int autotype = FieldValueHitQueue.detectFieldType(reader, fieldname); + int autotype = SortField.detectFieldType(reader, fieldname); if (autotype == SortField.STRING) { fields[i] = new SortField (fieldname, field.getLocale(), field.getReverse()); } else { Modified: lucene/java/trunk/src/java/org/apache/lucene/search/SortField.java URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/search/SortField.java?rev=768385&r1=768384&r2=768385&view=diff ============================================================================== --- lucene/java/trunk/src/java/org/apache/lucene/search/SortField.java (original) +++ lucene/java/trunk/src/java/org/apache/lucene/search/SortField.java Fri Apr 24 17:59:04 2009 @@ -21,6 +21,10 @@ import java.io.Serializable; import java.util.Locale; +import org.apache.lucene.index.IndexReader; +import org.apache.lucene.index.Term; +import org.apache.lucene.index.TermEnum; + /** * Stores information about how to sort documents by terms in an individual * field. Fields must be indexed in order to sort by them. @@ -488,4 +492,53 @@ throw new IllegalStateException("Illegal sort type: " + type); } } + + /** Attempts to detect the given field type for an IndexReader. */ + static int detectFieldType(IndexReader reader, String fieldKey) throws IOException { + String field = fieldKey.intern(); + TermEnum enumerator = reader.terms(new Term(field)); + try { + Term term = enumerator.term(); + if (term == null) { + throw new RuntimeException("no terms in field " + field + " - cannot determine sort type"); + } + int ret = 0; + if (term.field() == field) { + String termtext = term.text().trim(); + + /** + * Java 1.4 level code: + + if (pIntegers.matcher(termtext).matches()) + return IntegerSortedHitQueue.comparator (reader, enumerator, field); + + else if (pFloats.matcher(termtext).matches()) + return FloatSortedHitQueue.comparator (reader, enumerator, field); + */ + + // Java 1.3 level code: + try { + Integer.parseInt (termtext); + ret = SortField.INT; + } catch (NumberFormatException nfe1) { + try { + Long.parseLong(termtext); + ret = SortField.LONG; + } catch (NumberFormatException nfe2) { + try { + Float.parseFloat (termtext); + ret = SortField.FLOAT; + } catch (NumberFormatException nfe3) { + ret = SortField.STRING; + } + } + } + } else { + throw new RuntimeException("field \"" + field + "\" does not appear to be indexed"); + } + return ret; + } finally { + enumerator.close(); + } + } }