
O - the type of DatabaseObject to be stored in the metrical indexD - the type of Distance used in the metrical indexN - the type of MetricalNode used in the metrical indexE - the type of MetricalEntry used in the metrical indexS - the type to store settings in.public abstract class AbstractMTree<O,D extends NumberDistance<D,?>,N extends AbstractMTreeNode<O,D,N,E>,E extends MTreeEntry,S extends MTreeSettings<O,D,N,E>> extends MetricalIndexTree<O,D,N,E>
| Modifier and Type | Class and Description | 
|---|---|
| class  | AbstractMTree.StatisticsClass for tracking some statistics. | 
| Modifier and Type | Field and Description | 
|---|---|
| protected static boolean | EXTRA_INTEGRITY_CHECKSDebugging flag: do extra integrity checks. | 
| protected S | settingsTree settings. | 
| AbstractMTree.Statistics | statisticsFor counting the number of distance computations. | 
dirCapacity, dirMinimum, initialized, leafCapacity, leafMinimum| Constructor and Description | 
|---|
| AbstractMTree(PageFile<N> pagefile,
             S settings)Constructor. | 
| Modifier and Type | Method and Description | 
|---|---|
| private void | adjustTree(IndexTreePath<E> subtree)Adjusts the tree after insertion of some nodes. | 
| protected void | createEmptyRoot(E exampleLeaf)Creates an empty root node and writes it to file. | 
| protected abstract E | createNewDirectoryEntry(N node,
                       DBID routingObjectID,
                       double parentDistance)Creates a new directory entry representing the specified node. | 
| private IndexTreePath<E> | createNewRoot(N oldRoot,
             N newNode,
             DBID firstRoutingObjectID,
             DBID secondRoutingObjectID)Creates a new root node that points to the two specified child nodes and
 return the path to the new root. | 
| abstract D | distance(DBIDRef id1,
        DBIDRef id2)Returns the distance between the two specified ids. | 
| D | distance(E e1,
        E e2)Returns the distance between the routing object of two entries. | 
| D | getDistanceFactory()Get the distance factory. | 
| DistanceFunction<? super O,D> | getDistanceFunction()Returns the distance function of this metrical index. | 
| int | getHeight()FIXME: expensive depth computation by following a path. | 
| List<E> | getLeaves()Returns a list of entries pointing to the leaf nodes of this spatial index. | 
| protected List<DoubleIntPair> | getSortedEntries(N node,
                DBID q)Sorts the entries of the specified node according to their minimum distance
 to the specified object. | 
| private boolean | hasOverflow(N node)Returns true if in the specified node an overflow has occurred, false
 otherwise. | 
| void | insert(E entry,
      boolean withPreInsert)Inserts the specified object into this M-Tree. | 
| void | insertAll(List<E> entries)Bulk insert. | 
| void | logStatistics()Log some statistics, if enabled. | 
| String | toString()Returns a string representation of this M-Tree by performing a breadth
 first enumeration on the tree and adding the string representation of the
 visited nodes and their entries to the result. | 
createHeader, createNewDirectoryNode, createNewLeafNode, createRootEntry, deleteNode, getFile, getLogger, getNode, getNode, getPageID, getPageSize, getRoot, getRootEntry, getRootID, getRootPath, initialize, initialize, initializeCapacities, initializeFromFile, isRoot, postDelete, preInsert, writeNodeprotected static final boolean EXTRA_INTEGRITY_CHECKS
public AbstractMTree.Statistics statistics
public final DistanceFunction<? super O,D> getDistanceFunction()
MetricalIndexTreegetDistanceFunction in class MetricalIndexTree<O,D extends NumberDistance<D,?>,N extends AbstractMTreeNode<O,D,N,E>,E extends MTreeEntry>public final D getDistanceFactory()
public String toString()
public void insert(E entry, boolean withPreInsert)
entry - the entry to be insertedwithPreInsert - if this flag is true, the preInsert method will be
        called before inserting the objectpublic void insertAll(List<E> entries)
entries - Entries to insertprotected final void createEmptyRoot(E exampleLeaf)
IndexTreecreateEmptyRoot in class IndexTree<N extends AbstractMTreeNode<O,D,N,E>,E extends MTreeEntry>exampleLeaf - an object that will be stored in the indexprotected final List<DoubleIntPair> getSortedEntries(N node, DBID q)
node - the nodeq - the id of the objectpublic abstract D distance(DBIDRef id1, DBIDRef id2)
id1 - the first idid2 - the second idpublic final D distance(E e1, E e2)
e1 - First entrye2 - Second entryprotected abstract E createNewDirectoryEntry(N node, DBID routingObjectID, double parentDistance)
node - the node to be represented by the new entryroutingObjectID - the id of the routing object of the nodeparentDistance - the distance from the routing object of the node to
        the routing object of the parent nodeprivate void adjustTree(IndexTreePath<E> subtree)
subtree - the subtree to be adjustedprivate boolean hasOverflow(N node)
node - the node to be tested for overflowprivate IndexTreePath<E> createNewRoot(N oldRoot, N newNode, DBID firstRoutingObjectID, DBID secondRoutingObjectID)
oldRoot - the old root of this RTreenewNode - the new split nodefirstRoutingObjectID - the id of the routing objects of the first
        child nodesecondRoutingObjectID - the id of the routing objects of the second
        child nodepublic List<E> getLeaves()
MetricalIndexTreegetLeaves in class MetricalIndexTree<O,D extends NumberDistance<D,?>,N extends AbstractMTreeNode<O,D,N,E>,E extends MTreeEntry>public int getHeight()
public void logStatistics()
IndexTreelogStatistics in class IndexTree<N extends AbstractMTreeNode<O,D,N,E>,E extends MTreeEntry>