Class LazyDocumentMap

java.lang.Object
org.dlese.dpc.index.reader.LazyDocumentMap
All Implemented Interfaces:
Map

public class LazyDocumentMap extends Object implements Map
A Map for accessing the data stored in a Lucene Document as field/value pairs. The data is loaded from the index only when requested via the Map accessor methods (e.g. lazy loading), making access to very large Documents possible in an efficient manner. Each stored field in the Document corresponds to a key in the Map. For example documentMap.get("title") gets the text that was indexed and stored under the field name "title" for the Document. Supports read operations only. A LazyDocumentMap is available from search results by calling ResultDoc.getDocMap().

Example that uses JSTL inside a JSP page (assumes result is an instance of ResultDoc):

The title is: ${result.docMap["title"]}.

Author:
John Weatherley
See Also:
  • Constructor Details

    • LazyDocumentMap

      public LazyDocumentMap(org.apache.lucene.document.Document doc)
      Constructor for the LazyDocumentMap object.
      Parameters:
      doc - The Lucene Document that is exposed by this Map.
    • LazyDocumentMap

      public LazyDocumentMap()
      Constructor for the LazyDocumentMap object.
  • Method Details

    • getFieldNames

      public LazyDocumentMap.FieldNameList getFieldNames()
      Gets the names of all fields in the document as Strings. This is similar to #keySet, but does not load all field/values into the Map and is therefore more efficient if only some fields are needed.
      Returns:
      The fieldNames value
      See Also:
    • getFieldValues

      public LazyDocumentMap.FieldValuesList getFieldValues()
      Gets the values for all fields in the document as Map.Entry Objects.
      Returns:
      The fieldNames value
    • getFirstTextValue

      public String getFirstTextValue(String fieldName)
      Returns the string value of the field with the given name if any exist in this document, or null. If multiple fields exist with this name, this method returns the first value added. If only binary fields with this name exist, returns null.
      Parameters:
      fieldName - Name of the field
      Returns:
      The text value or null if none
    • get

      public String get(Object fieldName)
      Gets the text content of the given Lucene field as a String or null if the given field is not available or was not stored in the index. Text includes all values stored in the index for the given field.
      Specified by:
      get in interface Map
      Parameters:
      fieldName - A Lucene Document field name
      Returns:
      The text of the field as a String, a Date, or null if not available.
    • keySet

      public Set keySet()
      Gets the field names in the Lucene Document. This is similar to #getFieldNames but it also loads all field/values into the Map and is therfore more expensive than #getFieldNames, especially for large Documents.
      Specified by:
      keySet in interface Map
      Returns:
      The field names
      See Also:
    • entrySet

      public Set entrySet()
      Gets the Set of field/value entries for the Lucene Document. Each Map.Entry Object in the Set contains the field name (key) and corresponding field value. The field value will be an empty String if the given field was not set to be stored in the index.
      Specified by:
      entrySet in interface Map
      Returns:
      The Set of field/value entries for the Lucene Document
      See Also:
    • containsKey

      public boolean containsKey(Object fieldName)
      Determines whether a given field exists in the Lucene Document.
      Specified by:
      containsKey in interface Map
      Parameters:
      fieldName - A field name
      Returns:
      True if the field exists in the Lucene Document
    • values

      public Collection values()
      Gets all field values that are present in the Lucene Document.
      Specified by:
      values in interface Map
      Returns:
      The field values
    • containsValue

      public boolean containsValue(Object value)
      Determines whether the given field value is present in the Lucene Document.
      Specified by:
      containsValue in interface Map
      Parameters:
      value - A field value
      Returns:
      True if the field value is present in this Document
    • isEmpty

      public boolean isEmpty()
      Determines whether there are no fields in this Document.
      Specified by:
      isEmpty in interface Map
      Returns:
      True if there are no fields in the Document.
    • size

      public int size()
      Gets the number of fields in the Document.
      Specified by:
      size in interface Map
      Returns:
      The number of fields in the Document
    • putAll

      public void putAll(Map t)
      Method not supported.
      Specified by:
      putAll in interface Map
      Parameters:
      t - Not supported.
    • put

      public Object put(Object key, Object value)
      Method not supported.
      Specified by:
      put in interface Map
      Parameters:
      key - Not supported.
      value - Not supported.
      Returns:
      Not supported.
    • remove

      public Object remove(Object key)
      Method not supported.
      Specified by:
      remove in interface Map
      Parameters:
      key - Not supported.
      Returns:
      Not supported.
    • clear

      public void clear()
      Method not supported.
      Specified by:
      clear in interface Map