# Field
Date: 2012-02-24

## com.google.appengine.api.search
Class Field

    java.lang.Object
      com.google.appengine.api.search.Field

All Implemented Interfaces:
  java.io.Serializable

    public final class Field

extends java.lang.Object
implements java.io.Serializable

Represents a field of a `Document`, which is a name, an optional locale, and at most one value: text, HTML, atom or date. Field name lengths are between 1 and `FieldChecker.MAXIMUM_NAME_LENGTH` characters, and text and HTML values are limited to `FieldChecker.MAXIMUM_TEXT_LENGTH`. Atoms as limited to `FieldChecker.MAXIMUM_ATOM_LENGTH` characters, and dates must not have a time component.

There are 3 types of text fields, ATOM, TEXT, and HTML. Atom fields when queried, are checked for equality. For example, if you add a field with name `code` and an ATOM value of "928A 33B-1", then query `code:"928A 33B-1"` would match the document with this field, while query `code:928A` would not. TEXT fields, unlike ATOM, match both on equality or if any token extracted from the original field matches. Thus if `code` field had the value set with `Field.Builder.setText(String)` method, both queries would match. Finally, HTML fields have HTML tags stripped before tokenization.

See Also:
  Serialized Form

Nested Class Summary
`static class` `Field.Builder` A field builder.
`static class` `Field.FieldType` The type of the field value.

Method Summary
`static java.util.Date` `date(java.util.Date date)` Returns a date which has been truncated to a day of month.
`boolean` `equals(java.lang.Object object)`
`java.lang.String` `getAtom()`
`java.util.Date` `getDate()`
`java.lang.String` `getHTML()`
`java.util.Locale` `getLocale()`
`java.lang.String` `getName()`
`java.lang.Double` `getNumber()`
`java.lang.String` `getText()`
`Field.FieldType` `getType()`
`int` `hashCode()`
`static Field.Builder` `newBuilder()` Creates a field builder.
`java.lang.String` `toString()`
`static java.util.Date` `truncate(java.util.Date date, int field)` Truncates given date leaving date elements lesser than the specified field set to 0.

Methods inherited from class java.lang.Object
`getClass, notify, notifyAll, wait, wait, wait`

Method Detail

### getName

    public java.lang.String getName()

  Returns:
    the name of the field

### getType

    public Field.FieldType getType()

  Returns:
    the type of value of the field. Can be null

### getText

    public java.lang.String getText()

  Returns:
    the text value of the field. Can be null

### getHTML

    public java.lang.String getHTML()

  Returns:
    the HTML value of the field. Can be null

### getAtom

    public java.lang.String getAtom()

  Returns:
    the atomic value of the field. Can be null

### getDate

    public java.util.Date getDate()

  Returns:
    the date value of the field. Can be null

### getNumber

    public java.lang.Double getNumber()

  Returns:
    the numeric value of the field. Can be null

### getLocale

    public java.util.Locale getLocale()

  Returns:
    the locale the field value is written in. Can be null. If none is given the locale of the document will be used

### hashCode

    public int hashCode()

  Overrides:
    `hashCode` in class `java.lang.Object`

### equals

    public boolean equals(java.lang.Object object)

  Overrides:
    `equals` in class `java.lang.Object`

### newBuilder

    public static Field.Builder newBuilder()

  Creates a field builder.

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`

### date

    public static java.util.Date date(java.util.Date date)

  Returns a date which has been truncated to a day of month.

  Parameters:
    `date` - the date to be truncated
  Returns:
    the date with fields less significant than `Calendar.DAY_OF_MONTH`

### truncate

    public static java.util.Date truncate(java.util.Date date,
                                          int field)

  Truncates given date leaving date elements lesser than the specified field set to 0. For example, if you wish to remove time component from the date use the following:

         Date d = ...
         Date yearMonthDay = Field.truncate(d, Calendar.DAY_OF_MONTH);

  Parameters:
    `date` - the date to be truncated
    `field` - the least significant field to be left untouched
  Returns:
    the date with fields less significant than field set to 0
  Throws:
    `java.lang.IllegalArgumentException` - if field is not a valid datetime field.