org.exist.storage
Class NativeValueIndex

java.lang.Object
  extended by org.exist.storage.NativeValueIndex
All Implemented Interfaces:
ContentLoadingObserver

public class NativeValueIndex
extends Object
implements ContentLoadingObserver

Maintains an index on typed node values. TODO: Check correct types during validation. In the BTree single BFile, the keys are : (collectionId, indexType, indexData) and the values are : gid1, gid2-gid1, ...

Algorithm:

When a node is stored, an entry is added or updated in the pending map, with given String content and basic type as key. This way, the index entries are easily put in the persistent BFile storage by flush() .

Author:
wolf

Field Summary
static double DEFAULT_VALUE_CACHE_GROWTH
           
static double DEFAULT_VALUE_KEY_THRESHOLD
           
static double DEFAULT_VALUE_VALUE_THRESHOLD
           
static String FILE_KEY_IN_CONFIG
           
static String FILE_NAME
           
static byte IDX_GENERIC
           
static byte IDX_QNAME
           
static int LENGTH_NODE_IDS
           
static int LENGTH_VALUE_TYPE
           
static int OFFSET_COLLECTION_ID
           
static int OFFSET_DATA
           
static int OFFSET_VALUE_TYPE
           
static String PROPERTY_INDEX_CASE_SENSITIVE
           
static int WITH_PATH
           
static int WITHOUT_PATH
           
 
Constructor Summary
NativeValueIndex(DBBroker broker, byte id, String dataDir, Configuration config)
           
 
Method Summary
 boolean close()
           
 void closeAndRemove()
           
 void dropIndex(Collection collection)
          Drop all index entries for the given collection.
 void dropIndex(DocumentImpl document)
          Drop all index entries for the given document.
 void endElement(int xpathType, ElementImpl node, String content)
          store and index given element (called storeElement before)
 NodeSet find(int relation, DocumentSet docs, NodeSet contextSet, int axis, QName qname, Indexable value)
          find
 void flush()
           
 String getConfigKeyForFile()
           
 String getFileName()
           
 NativeValueIndex getInstance()
           
 NodeSet match(DocumentSet docs, NodeSet contextSet, int axis, String expr, QName qname, int type)
           
 NodeSet match(DocumentSet docs, NodeSet contextSet, int axis, String expr, QName qname, int type, int flags, boolean caseSensitiveQuery)
          Regular expression search
 void printStatistics()
           
 void remove()
          remove all pending modifications, for the current document.
 void removeElement(ElementImpl node, NodePath currentPath, String content)
          Mark given Element for removal; added entries are written to the list of pending entries.
 ValueOccurrences[] scanIndexKeys(DocumentSet docs, NodeSet contextSet, Indexable start)
           
 void setDocument(DocumentImpl document)
          set the current document; generally called before calling an operation
 void startElement(ElementImpl node, NodePath currentPath, boolean index)
          corresponds to SAX function of the same name
 void storeAttribute(AttrImpl node, NodePath currentPath, int indexingHint, RangeIndexSpec spec, boolean remove)
          Store the given attribute's value in the value index.
 void storeElement(ElementImpl node, String content, int xpathType, byte indexType, boolean remove)
          Store the given element's value in the value index.
 void storeText(TextImpl node, NodePath currentPath, int indexingHint)
          store and index given text node
 void sync()
          triggers a cache sync, i.e.
 String toString()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

FILE_NAME

public static final String FILE_NAME
See Also:
Constant Field Values

FILE_KEY_IN_CONFIG

public static final String FILE_KEY_IN_CONFIG
See Also:
Constant Field Values

WITH_PATH

public static final int WITH_PATH
See Also:
Constant Field Values

WITHOUT_PATH

public static final int WITHOUT_PATH
See Also:
Constant Field Values

DEFAULT_VALUE_CACHE_GROWTH

public static final double DEFAULT_VALUE_CACHE_GROWTH
See Also:
Constant Field Values

DEFAULT_VALUE_KEY_THRESHOLD

public static final double DEFAULT_VALUE_KEY_THRESHOLD
See Also:
Constant Field Values

DEFAULT_VALUE_VALUE_THRESHOLD

public static final double DEFAULT_VALUE_VALUE_THRESHOLD
See Also:
Constant Field Values

LENGTH_VALUE_TYPE

public static final int LENGTH_VALUE_TYPE
See Also:
Constant Field Values

LENGTH_NODE_IDS

public static final int LENGTH_NODE_IDS
See Also:
Constant Field Values

OFFSET_COLLECTION_ID

public static final int OFFSET_COLLECTION_ID
See Also:
Constant Field Values

OFFSET_VALUE_TYPE

public static final int OFFSET_VALUE_TYPE

OFFSET_DATA

public static final int OFFSET_DATA

IDX_GENERIC

public static final byte IDX_GENERIC
See Also:
Constant Field Values

IDX_QNAME

public static final byte IDX_QNAME
See Also:
Constant Field Values

PROPERTY_INDEX_CASE_SENSITIVE

public static String PROPERTY_INDEX_CASE_SENSITIVE
Constructor Detail

NativeValueIndex

public NativeValueIndex(DBBroker broker,
                        byte id,
                        String dataDir,
                        Configuration config)
                 throws DBException
Throws:
DBException
Method Detail

getFileName

public String getFileName()
Specified by:
getFileName in interface ContentLoadingObserver

getConfigKeyForFile

public String getConfigKeyForFile()
Specified by:
getConfigKeyForFile in interface ContentLoadingObserver

getInstance

public NativeValueIndex getInstance()

setDocument

public void setDocument(DocumentImpl document)
Description copied from interface: ContentLoadingObserver
set the current document; generally called before calling an operation

Specified by:
setDocument in interface ContentLoadingObserver

storeElement

public void storeElement(ElementImpl node,
                         String content,
                         int xpathType,
                         byte indexType,
                         boolean remove)
Store the given element's value in the value index.

Parameters:
xpathType - The value type
node - The element
content - The string representation of the value

storeAttribute

public void storeAttribute(AttrImpl node,
                           NodePath currentPath,
                           int indexingHint,
                           RangeIndexSpec spec,
                           boolean remove)
Store the given attribute's value in the value index.

Specified by:
storeAttribute in interface ContentLoadingObserver
Parameters:
spec - The index specification
node - The attribute

storeText

public void storeText(TextImpl node,
                      NodePath currentPath,
                      int indexingHint)
Description copied from interface: ContentLoadingObserver
store and index given text node

Specified by:
storeText in interface ContentLoadingObserver

startElement

public void startElement(ElementImpl node,
                         NodePath currentPath,
                         boolean index)
Description copied from interface: ContentLoadingObserver
corresponds to SAX function of the same name

Specified by:
startElement in interface ContentLoadingObserver

endElement

public void endElement(int xpathType,
                       ElementImpl node,
                       String content)
Description copied from interface: ContentLoadingObserver
store and index given element (called storeElement before)

Specified by:
endElement in interface ContentLoadingObserver

removeElement

public void removeElement(ElementImpl node,
                          NodePath currentPath,
                          String content)
Description copied from interface: ContentLoadingObserver
Mark given Element for removal; added entries are written to the list of pending entries. ContentLoadingObserver.flush() is called later to flush all pending entries.
Notes: changed name from storeElement()

Specified by:
removeElement in interface ContentLoadingObserver

sync

public void sync()
Description copied from interface: ContentLoadingObserver
triggers a cache sync, i.e. forces to write out all cached pages. sync() is called from time to time by the background sync daemon.

Specified by:
sync in interface ContentLoadingObserver

flush

public void flush()
Specified by:
flush in interface ContentLoadingObserver

remove

public void remove()
Description copied from interface: ContentLoadingObserver
remove all pending modifications, for the current document.

Specified by:
remove in interface ContentLoadingObserver

dropIndex

public void dropIndex(Collection collection)
Description copied from interface: ContentLoadingObserver
Drop all index entries for the given collection.

Specified by:
dropIndex in interface ContentLoadingObserver

dropIndex

public void dropIndex(DocumentImpl document)
               throws ReadOnlyException
Description copied from interface: ContentLoadingObserver
Drop all index entries for the given document.

Specified by:
dropIndex in interface ContentLoadingObserver
Throws:
ReadOnlyException

find

public NodeSet find(int relation,
                    DocumentSet docs,
                    NodeSet contextSet,
                    int axis,
                    QName qname,
                    Indexable value)
             throws TerminatedException
find

Parameters:
relation - binary operator used for the comparison
value - right hand comparison value
Throws:
TerminatedException

match

public NodeSet match(DocumentSet docs,
                     NodeSet contextSet,
                     int axis,
                     String expr,
                     QName qname,
                     int type)
              throws TerminatedException,
                     EXistException
Throws:
TerminatedException
EXistException

match

public NodeSet match(DocumentSet docs,
                     NodeSet contextSet,
                     int axis,
                     String expr,
                     QName qname,
                     int type,
                     int flags,
                     boolean caseSensitiveQuery)
              throws TerminatedException,
                     EXistException
Regular expression search

Parameters:
type - like type argument for RegexMatcher constructor
flags - like flags argument for RegexMatcher constructor
Throws:
TerminatedException
EXistException

scanIndexKeys

public ValueOccurrences[] scanIndexKeys(DocumentSet docs,
                                        NodeSet contextSet,
                                        Indexable start)

closeAndRemove

public void closeAndRemove()
Specified by:
closeAndRemove in interface ContentLoadingObserver

close

public boolean close()
              throws DBException
Specified by:
close in interface ContentLoadingObserver
Throws:
DBException

printStatistics

public void printStatistics()
Specified by:
printStatistics in interface ContentLoadingObserver

toString

public String toString()
Overrides:
toString in class Object


Copyright (C) Wolfgang Meier. All rights reserved.