DLESE Tools
v1.6.0

org.dlese.dpc.index.reader
Class LazyDocumentMap

java.lang.Object
  extended by 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:
Document, ResultDoc, DocumentMap

Nested Class Summary
 class LazyDocumentMap.FieldMapEntry
          A Map entry containing lucene fieldName/fieldValues
 class LazyDocumentMap.FieldNameList
          A List for field names in a Lucene Document.
 class LazyDocumentMap.FieldValuesList
          A List for field values in a Lucene Document.
 
Nested classes/interfaces inherited from interface java.util.Map
Map.Entry<K,V>
 
Constructor Summary
LazyDocumentMap()
          Constructor for the LazyDocumentMap object.
LazyDocumentMap(org.apache.lucene.document.Document doc)
          Constructor for the LazyDocumentMap object.
 
Method Summary
 void clear()
          Method not supported.
 boolean containsKey(Object fieldName)
          Determines whether a given field exists in the Lucene Document.
 boolean containsValue(Object value)
          Determines whether the given field value is present in the Lucene Document.
 Set entrySet()
          Gets the Set of field/value entries for the Lucene Document.
 Object 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.
 LazyDocumentMap.FieldNameList getFieldNames()
          Gets the names of all fields in the document as Strings.
 LazyDocumentMap.FieldValuesList getFieldValues()
          Gets the values for all fields in the document as Map.Entry Objects.
 String getFirstTextValue(String fieldName)
          Returns the string value of the field with the given name if any exist in this document, or null.
 boolean isEmpty()
          Determines whether there are no fields in this Document.
 Set keySet()
          Gets the field names in the Lucene Document.
 Object put(Object key, Object value)
          Method not supported.
 void putAll(Map t)
          Method not supported.
 Object remove(Object key)
          Method not supported.
 int size()
          Gets the number of fields in the Document.
 Collection values()
          Gets all field values that are present in the Lucene Document.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Map
equals, hashCode
 

Constructor Detail

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 Detail

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:
keySet()

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 Object 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:
getFieldNames()

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:
Map.Entry

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

DLESE Tools
v1.6.0