diff --git a/solr/core/src/java/org/apache/solr/schema/DatePointField.java b/solr/core/src/java/org/apache/solr/schema/DatePointField.java index 377f571f299..50f85e30d30 100644 --- a/solr/core/src/java/org/apache/solr/schema/DatePointField.java +++ b/solr/core/src/java/org/apache/solr/schema/DatePointField.java @@ -36,8 +36,70 @@ import org.apache.lucene.util.mutable.MutableValueDate; import org.apache.lucene.util.mutable.MutableValueLong; import org.apache.solr.search.QParser; import org.apache.solr.uninverting.UninvertingReader; +import org.apache.solr.update.processor.TimestampUpdateProcessorFactory; import org.apache.solr.util.DateMathParser; +/** + * FieldType that can represent any Date/Time with millisecond precision. + *

+ * Date Format for the XML, incoming and outgoing: + *

+ *
+ * A date field shall be of the form 1995-12-31T23:59:59Z + * The trailing "Z" designates UTC time and is mandatory + * (See below for an explanation of UTC). + * Optional fractional seconds are allowed, as long as they do not end + * in a trailing 0 (but any precision beyond milliseconds will be ignored). + * All other parts are mandatory. + *
+ *

+ * This format was derived to be standards compliant (ISO 8601) and is a more + * restricted form of the + * canonical + * representation of dateTime from XML schema part 2. Examples... + *

+ * + *

+ * Note that DatePointField is lenient with regards to parsing fractional + * seconds that end in trailing zeros and will ensure that those values + * are indexed in the correct canonical format. + *

+ *

+ * This FieldType also supports incoming "Date Math" strings for computing + * values by adding/rounding internals of time relative either an explicit + * datetime (in the format specified above) or the literal string "NOW", + * ie: "NOW+1YEAR", "NOW/DAY", "1995-12-31T23:59:59.999Z+5MINUTES", etc... + * -- see {@link DateMathParser} for more examples. + *

+ *

+ * NOTE: Although it is possible to configure a DatePointField + * instance with a default value of "NOW" to compute a timestamp + * of when the document was indexed, this is not advisable when using SolrCloud + * since each replica of the document may compute a slightly different value. + * {@link TimestampUpdateProcessorFactory} is recommended instead. + *

+ * + *

+ * Explanation of "UTC"... + *

+ *
+ * "In 1970 the Coordinated Universal Time system was devised by an + * international advisory group of technical experts within the International + * Telecommunication Union (ITU). The ITU felt it was best to designate a + * single abbreviation for use in all languages in order to minimize + * confusion. Since unanimous agreement could not be achieved on using + * either the English word order, CUT, or the French word order, TUC, the + * acronym UTC was chosen as a compromise." + *
+ * + * @see TrieDateField + * @see PointField + */ public class DatePointField extends PointField implements DateValueFieldType { public DatePointField() {