
O - Object typepublic class RdKNNTree<O extends NumberVector> extends NonFlatRStarTree<RdKNNNode,RdKNNEntry,RdkNNSettings<O>> implements RangeIndex<O>, KNNIndex<O>, RKNNIndex<O>, DynamicIndex
AbstractRStarTree.Statistics| Modifier and Type | Field and Description |
|---|---|
private SpatialDistanceQuery<O> |
distanceQuery
The distance function.
|
protected KNNQuery<O> |
knnQuery
Internal knn query object, for updating the rKNN.
|
private static Logging |
LOG
The logger for this class.
|
private Relation<O> |
relation
The relation we query.
|
EXTRA_INTEGRITY_CHECKS, height, settings, statisticsdirCapacity, dirMinimum, initialized, leafCapacity, leafMinimum| Constructor and Description |
|---|
RdKNNTree(Relation<O> relation,
PageFile<RdKNNNode> pagefile,
RdkNNSettings<O> settings)
Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
private void |
adjustKNNDistance(RdKNNEntry entry,
ArrayDBIDs ids,
List<? extends KNNList> knnLists)
Adjusts the knn distance in the subtree of the specified root entry.
|
protected void |
bulkLoad(List<RdKNNEntry> entries)
Performs a bulk load on this RTree with the specified data.
|
List<ModifiableDoubleDBIDList> |
bulkReverseKNNQueryForID(DBIDs ids,
int k,
SpatialPrimitiveDistanceFunction<? super O> distanceFunction,
KNNQuery<O> knnQuery) |
private void |
checkDistanceFunction(SpatialPrimitiveDistanceFunction<? super O> distanceFunction)
Throws an IllegalArgumentException if the specified distance function is
not an instance of the distance function used by this index.
|
protected TreeIndexHeader |
createHeader()
Creates a header for this index structure which is an instance of
TreeIndexHeader. |
protected RdKNNEntry |
createNewDirectoryEntry(RdKNNNode node)
Creates a new directory entry representing the specified node.
|
protected RdKNNNode |
createNewDirectoryNode()
Creates a new directory node with the specified capacity.
|
protected RdKNNLeafEntry |
createNewLeafEntry(DBID id) |
protected RdKNNNode |
createNewLeafNode()
Creates a new leaf node with the specified capacity.
|
protected RdKNNEntry |
createRootEntry()
Creates an entry representing the root node.
|
boolean |
delete(DBIDRef id)
Deletes the specified object from this index.
|
void |
deleteAll(DBIDs ids)
Deletes the specified objects from this index.
|
private void |
doBulkReverseKNN(RdKNNNode node,
DBIDs ids,
Map<DBID,ModifiableDoubleDBIDList> result)
Performs a bulk reverse knn query in the specified subtree.
|
private void |
doReverseKNN(RdKNNNode node,
DBID oid,
ModifiableDoubleDBIDList result)
Performs a reverse knn query in the specified subtree.
|
KNNQuery<O> |
getKNNQuery(DistanceQuery<O> distanceQuery,
Object... hints)
Get a KNN query object for the given distance query and k.
|
protected Logging |
getLogger()
Get the (STATIC) logger for this class.
|
String |
getLongName()
A "pretty" name for the result, for use in titles, captions and menus.
|
RangeQuery<O> |
getRangeQuery(DistanceQuery<O> distanceQuery,
Object... hints)
Get a range query object for the given distance query and k.
|
RKNNQuery<O> |
getRKNNQuery(DistanceQuery<O> distanceQuery,
Object... hints)
Get a KNN query object for the given distance query and k.
|
String |
getShortName()
A short name for the result, useful for file names.
|
protected List<DoubleObjPair<RdKNNEntry>> |
getSortedEntries(AbstractRStarTreeNode<?,?> node,
SpatialComparable q,
SpatialPrimitiveDistanceFunction<?> distanceFunction)
Sorts the entries of the specified node according to their minimum distance
to the specified object.
|
void |
initialize()
Initialize the tree if the page file already existed.
|
protected void |
initializeCapacities(RdKNNEntry exampleLeaf)
Determines the maximum and minimum number of entries in a node.
|
void |
insert(DBIDRef id)
Inserts the specified real vector object into this index.
|
void |
insertAll(DBIDs ids)
Inserts the specified objects into this index.
|
protected void |
postDelete(RdKNNEntry entry)
Performs necessary operations after deleting the specified object.
|
protected void |
preInsert(RdKNNEntry entry)
Performs necessary operations before inserting the specified entry.
|
private void |
preInsert(RdKNNEntry q,
RdKNNEntry nodeEntry,
KNNHeap knns_q)
Adapts the knn distances before insertion of entry q.
|
DoubleDBIDList |
reverseKNNQuery(DBID oid,
int k,
SpatialPrimitiveDistanceFunction<? super O> distanceFunction,
KNNQuery<O> knnQuery) |
computeHeight, createEmptyRoot, hasOverflow, hasUnderflowadjustTree, canBulkLoad, choosePath, containedTest, createBulkLeafNodes, createNewRoot, deletePath, doExtraIntegrityChecks, findPathToObject, getHeight, getLeaves, initializeFromFile, insertDirectoryEntry, insertLeaf, insertLeafEntry, logStatistics, reInsert, setHeight, toStringdeleteNode, getFile, getNode, getNode, getPageID, getPageSize, getRoot, getRootEntry, getRootID, getRootPath, initialize, isRoot, writeNodeclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitlogStatisticsprivate static final Logging LOG
private SpatialDistanceQuery<O extends NumberVector> distanceQuery
protected KNNQuery<O extends NumberVector> knnQuery
private Relation<O extends NumberVector> relation
protected void preInsert(RdKNNEntry entry)
preInsert in class IndexTree<RdKNNNode,RdKNNEntry>entry - the entry to be insertedprotected void postDelete(RdKNNEntry entry)
postDelete in class IndexTree<RdKNNNode,RdKNNEntry>entry - the entry that was removedprotected void bulkLoad(List<RdKNNEntry> entries)
bulkLoad in class NonFlatRStarTree<RdKNNNode,RdKNNEntry,RdkNNSettings<O extends NumberVector>>entries - Entries to bulk loadpublic DoubleDBIDList reverseKNNQuery(DBID oid, int k, SpatialPrimitiveDistanceFunction<? super O> distanceFunction, KNNQuery<O> knnQuery)
public List<ModifiableDoubleDBIDList> bulkReverseKNNQueryForID(DBIDs ids, int k, SpatialPrimitiveDistanceFunction<? super O> distanceFunction, KNNQuery<O> knnQuery)
protected TreeIndexHeader createHeader()
IndexTreeTreeIndexHeader. Subclasses may need to overwrite this method if
they need a more specialized header.createHeader in class IndexTree<RdKNNNode,RdKNNEntry>protected void initializeCapacities(RdKNNEntry exampleLeaf)
IndexTreeinitializeCapacities in class AbstractRStarTree<RdKNNNode,RdKNNEntry,RdkNNSettings<O extends NumberVector>>exampleLeaf - an object that will be stored in the indexprotected List<DoubleObjPair<RdKNNEntry>> getSortedEntries(AbstractRStarTreeNode<?,?> node, SpatialComparable q, SpatialPrimitiveDistanceFunction<?> distanceFunction)
node - the nodeq - the query objectdistanceFunction - the distance function for computing the distancesprivate void preInsert(RdKNNEntry q, RdKNNEntry nodeEntry, KNNHeap knns_q)
q - the entry to be insertednodeEntry - the entry representing the root of the current subtreeknns_q - the knns of qprivate void doReverseKNN(RdKNNNode node, DBID oid, ModifiableDoubleDBIDList result)
node - the root node of the current subtreeoid - the id of the object for which the rknn query is performedresult - the list containing the query resultsprivate void doBulkReverseKNN(RdKNNNode node, DBIDs ids, Map<DBID,ModifiableDoubleDBIDList> result)
node - the root node of the current subtreeids - the object ids for which the rknn query is performedresult - the map containing the query results for each objectprivate void adjustKNNDistance(RdKNNEntry entry, ArrayDBIDs ids, List<? extends KNNList> knnLists)
entry - the root entry of the current subtreeids - Sorted list of IDsknnLists - a map of knn lists for each leaf entryprotected RdKNNNode createNewLeafNode()
createNewLeafNode in class IndexTree<RdKNNNode,RdKNNEntry>protected RdKNNNode createNewDirectoryNode()
createNewDirectoryNode in class IndexTree<RdKNNNode,RdKNNEntry>protected RdKNNEntry createNewDirectoryEntry(RdKNNNode node)
createNewDirectoryEntry in class AbstractRStarTree<RdKNNNode,RdKNNEntry,RdkNNSettings<O extends NumberVector>>node - the node to be represented by the new entryprotected RdKNNEntry createRootEntry()
createRootEntry in class IndexTree<RdKNNNode,RdKNNEntry>private void checkDistanceFunction(SpatialPrimitiveDistanceFunction<? super O> distanceFunction)
distanceFunction - the distance function to be checkedIllegalArgumentExceptionprotected RdKNNLeafEntry createNewLeafEntry(DBID id)
public void initialize()
IndexTreeinitialize in interface Indexinitialize in class IndexTree<RdKNNNode,RdKNNEntry>public final void insert(DBIDRef id)
insert in interface DynamicIndexid - the object id that was insertedpublic final void insertAll(DBIDs ids)
insertAll in interface DynamicIndexids - the objects to be insertedpublic final boolean delete(DBIDRef id)
delete in interface DynamicIndexid - Object to removepublic void deleteAll(DBIDs ids)
DynamicIndexdeleteAll in interface DynamicIndexids - Objects to removepublic RangeQuery<O> getRangeQuery(DistanceQuery<O> distanceQuery, Object... hints)
RangeIndexgetRangeQuery in interface RangeIndex<O extends NumberVector>distanceQuery - Distance queryhints - Hints for the optimizernullpublic KNNQuery<O> getKNNQuery(DistanceQuery<O> distanceQuery, Object... hints)
KNNIndexgetKNNQuery in interface KNNIndex<O extends NumberVector>distanceQuery - Distance queryhints - Hints for the optimizernullpublic RKNNQuery<O> getRKNNQuery(DistanceQuery<O> distanceQuery, Object... hints)
RKNNIndexgetRKNNQuery in interface RKNNIndex<O extends NumberVector>distanceQuery - Distance queryhints - Hints for the optimizernullpublic String getLongName()
ResultgetLongName in interface Resultpublic String getShortName()
ResultgetShortName in interface ResultCopyright © 2015 ELKI Development Team, Lehr- und Forschungseinheit für Datenbanksysteme, Ludwig-Maximilians-Universität München. License information.