You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ry...@apache.org on 2011/03/29 20:45:54 UTC
svn commit: r1086681 -
/lucene/dev/trunk/solr/src/java/org/apache/solr/schema/TrieDateField.java
Author: ryan
Date: Tue Mar 29 18:45:54 2011
New Revision: 1086681
URL: http://svn.apache.org/viewvc?rev=1086681&view=rev
Log:
LUCENE-3001 fix solr trie date field from #1086651
Modified:
lucene/dev/trunk/solr/src/java/org/apache/solr/schema/TrieDateField.java
Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/schema/TrieDateField.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/schema/TrieDateField.java?rev=1086681&r1=1086680&r2=1086681&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/schema/TrieDateField.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/schema/TrieDateField.java Tue Mar 29 18:45:54 2011
@@ -27,6 +27,7 @@ import org.apache.solr.search.function.*
import org.apache.solr.search.QParser;
import org.apache.solr.response.TextResponseWriter;
import org.apache.lucene.document.Fieldable;
+import org.apache.lucene.document.Field;
import org.apache.lucene.search.SortField;
import org.apache.lucene.search.FieldCache;
import org.apache.lucene.search.Query;
@@ -36,6 +37,8 @@ import org.apache.lucene.search.cache.Lo
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.NumericUtils;
import org.apache.lucene.util.TrieFieldHelper;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.NumericTokenStream;
import java.util.Map;
import java.util.Date;
@@ -165,6 +168,44 @@ public class TrieDateField extends DateF
return readableToIndexed(storedToReadable(f));
}
+ @Override
+ public Fieldable createField(SchemaField field, Object value, float boost) {
+ boolean indexed = field.indexed();
+ boolean stored = field.stored();
+
+ if (!indexed && !stored) {
+ if (log.isTraceEnabled())
+ log.trace("Ignoring unindexed/unstored field: " + field);
+ return null;
+ }
+
+ int ps = precisionStep;
+
+ byte[] arr=null;
+ TokenStream ts=null;
+
+ long time = (value instanceof Date)
+ ? ((Date)value).getTime()
+ : super.parseMath(null, value.toString()).getTime();
+
+ if (stored) arr = TrieFieldHelper.toArr(time);
+ if (indexed) ts = new NumericTokenStream(ps).setLongValue(time);
+
+ Field f;
+ if (stored) {
+ f = new Field(field.getName(), arr);
+ if (indexed) f.setTokenStream(ts);
+ } else {
+ f = new Field(field.getName(), ts);
+ }
+
+ // term vectors aren't supported
+
+ f.setOmitNorms(field.omitNorms());
+ f.setOmitTermFreqAndPositions(field.omitTf());
+ f.setBoost(boost);
+ return f;
+ }
@Override
public Query getRangeQuery(QParser parser, SchemaField field, String min, String max, boolean minInclusive, boolean maxInclusive) {