com.google.appengine.api.search

## Class Document

- java.lang.Object
- - com.google.appengine.api.search.Document

- All Implemented Interfaces:
    java.io.Serializable
  Direct Known Subclasses:
    ScoredDocument

      public class Document
      extends java.lang.Object
      implements java.io.Serializable

  Represents a user generated document. The following example shows how to create a document consisting of a set of fields, some with plain text and some in HTML; it also adds facets to the document.

          Document document = Document.newBuilder().setId("document id")
             .setLocale(Locale.UK)
             .addField(Field.newBuilder()
                 .setName("subject")
                 .setText("going for dinner"))
             .addField(Field.newBuilder()
                 .setName("body")
                 .setHTML("<html>I found a restaurant.</html>"))
             .addField(Field.newBuilder()
                 .setName("signature")
                 .setText("ten post jest przeznaczony dla odbiorcy")
                 .setLocale(new Locale("pl")))
             .addFacet(Facet.withAtom("tag", "food"))
             .addFacet(Facet.withNumber("priority", 5.0))
             .build();

  The following example shows how to access the fields within a document:

          Document document = ...

          for (Field field : document.getFields()) {
            switch (field.getType()) {
              case TEXT: use(field.getText()); break;
              case HTML: use(field.getHtml()); break;
              case ATOM: use(field.getAtom()); break;
              case DATE: use(field.getDate()); break;
            }
          }

  And this example shows how to access the facets within a document:

          Document document = ...

          for (Facet facet : document.getFacets()) {
            switch (facet.getType()) {
              case ATOM:   use(facet.getAtom()); break;
              case NUMBER: use(facet.getNumber()); break;
            }
          }

  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `Document.Builder` A builder of documents.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(java.lang.Object object)`
    `int` | `getFacetCount(java.lang.String name)` Returns the number of times a facet with the given name is present in this document.
    `java.util.Set<java.lang.String>` | `getFacetNames()` Returns an unmodifiable `Set` of the facet names in the document
    `java.lang.Iterable<Facet>` | `getFacets()` Returns an iterable of `Facet` in the document
    `java.lang.Iterable<Facet>` | `getFacets(java.lang.String name)` Returns an iterable of all facets with the given name.
    `int` | `getFieldCount(java.lang.String name)` Returns the number of times a field with the given name is present in this document.
    `java.util.Set<java.lang.String>` | `getFieldNames()` Returns an unmodifiable `Set` of the field names in the document
    `java.lang.Iterable<Field>` | `getFields()` Returns an iterable of `Field` in the document
    `java.lang.Iterable<Field>` | `getFields(java.lang.String name)` Returns an iterable of all fields with the given name.
    `java.lang.String` | `getId()`
    `java.util.Locale` | `getLocale()`
    `Facet` | `getOnlyFacet(java.lang.String name)` Returns the single facet with the given name.
    `Field` | `getOnlyField(java.lang.String name)` Returns the single field with the given name.
    `int` | `getRank()` Returns the rank of this document.
    `int` | `hashCode()`
    `static Document.Builder` | `newBuilder()` Creates a new document builder.
    `java.lang.String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `getClass, notify, notifyAll, wait, wait, wait`

- - ### Method Detail

    - #### getFields

          public java.lang.Iterable<Field> getFields()

      Returns an iterable of `Field` in the document

    - #### getFacets

          public java.lang.Iterable<Facet> getFacets()

      Returns an iterable of `Facet` in the document

    - #### getFieldNames

          public java.util.Set<java.lang.String> getFieldNames()

      Returns an unmodifiable `Set` of the field names in the document

    - #### getFacetNames

          public java.util.Set<java.lang.String> getFacetNames()

      Returns an unmodifiable `Set` of the facet names in the document

    - #### getFields

          public java.lang.Iterable<Field> getFields(java.lang.String name)

      Returns an iterable of all fields with the given name.
      Parameters:
        `name` - the name of the field whose values are to be returned
      Returns:
        an unmodifiable `Iterable` of `Field` with the given name or `null`

    - #### getFacets

          public java.lang.Iterable<Facet> getFacets(java.lang.String name)

      Returns an iterable of all facets with the given name.
      Parameters:
        `name` - the name of the facet whose values are to be returned
      Returns:
        an unmodifiable `Iterable` of `Facet` with the given name or `null`

    - #### getOnlyField

          public Field getOnlyField(java.lang.String name)

      Returns the single field with the given name.
      Parameters:
        `name` - the name of the field to return
      Returns:
        the single field with name
      Throws:
        `java.lang.IllegalArgumentException` - if the document does not have exactly one field with the name

    - #### getOnlyFacet

          public Facet getOnlyFacet(java.lang.String name)

      Returns the single facet with the given name.
      Parameters:
        `name` - the name of the facet to return
      Returns:
        the single facet with name
      Throws:
        `java.lang.IllegalArgumentException` - if the document does not have exactly one facet with the name

    - #### getFieldCount

          public int getFieldCount(java.lang.String name)

      Returns the number of times a field with the given name is present in this document.
      Parameters:
        `name` - the name of the field to be counted
      Returns:
        the number of times a field with the given name is present

    - #### getFacetCount

          public int getFacetCount(java.lang.String name)

      Returns the number of times a facet with the given name is present in this document.
      Parameters:
        `name` - the name of the facet to be counted
      Returns:
        the number of times a facet with the given name is present

    - #### getId

          public java.lang.String getId()

      Returns:
        the id of the document

    - #### getLocale

          public java.util.Locale getLocale()

      Returns:
        the `Locale` the document is written in. Can be null

    - #### getRank

          public int getRank()

      Returns the rank of this document. A document's rank is used to determine the default order in which documents are returned by search, if no sorting or scoring is specified.
      Returns:
        the rank of this document

    - #### 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 Document.Builder newBuilder()

      Creates a new document builder. You must use this method to obtain a new builder. The returned builder must be used to specify all properties of the document. To obtain the document call the `Document.Builder.build()` method on the returned builder.
      Returns:
        a builder which constructs a document object

    - #### toString

          public java.lang.String toString()

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