Environment for
DeveLoping
KDD-Applications
Supported by Index-Structures

de.lmu.ifi.dbs.elki.database
Class MetricalIndexDatabase<O extends DatabaseObject,D extends Distance<D>,N extends MetricalNode<N,E>,E extends MTreeEntry<D>>

java.lang.Object
  extended by de.lmu.ifi.dbs.elki.logging.AbstractLoggable
      extended by de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizable
          extended by de.lmu.ifi.dbs.elki.database.AbstractDatabase<O>
              extended by de.lmu.ifi.dbs.elki.database.IndexDatabase<O>
                  extended by de.lmu.ifi.dbs.elki.database.MetricalIndexDatabase<O,D,N,E>
All Implemented Interfaces:
Database<O>, Loggable, Parameterizable

public class MetricalIndexDatabase<O extends DatabaseObject,D extends Distance<D>,N extends MetricalNode<N,E>,E extends MTreeEntry<D>>
extends IndexDatabase<O>

MetricalIndexDatabase is a database implementation which is supported by a metrical index structure.

Author:
Elke Achtert

Field Summary
(package private)  MetricalIndex<O,D,N,E> index
          The metrical index storing the data.
static OptionID INDEX_ID
          OptionID for INDEX_PARAM
private  ClassParameter<MetricalIndex> INDEX_PARAM
          Parameter to specify the metrical index to use.
 
Fields inherited from class de.lmu.ifi.dbs.elki.database.AbstractDatabase
listenerList
 
Fields inherited from class de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizable
optionHandler
 
Fields inherited from class de.lmu.ifi.dbs.elki.logging.AbstractLoggable
debug
 
Constructor Summary
MetricalIndexDatabase()
           
 
Method Summary
<D extends Distance<D>>
List<List<QueryResult<D>>>
bulkKNNQueryForID(List<Integer> ids, int k, DistanceFunction<O,D> distanceFunction)
          Performs k-nearest neighbor queries for the given object IDs.
 String description()
          Returns a short description of the database.
 MetricalIndex<O,D,N,E> getIndex()
          Returns the index of this database.
 void insert(List<ObjectAndAssociations<O>> objectsAndAssociationsList)
          Calls the super method and afterwards inserts the specified objects into the underlying index structure.
 Integer insert(ObjectAndAssociations<O> objectAndAssociations)
          Calls the super method and afterwards inserts the specified object into the underlying index structure.
<T extends Distance<T>>
List<QueryResult<T>>
kNNQueryForID(Integer id, int k, DistanceFunction<O,T> distanceFunction)
          Performs a k-nearest neighbor query for the given object ID.
<T extends Distance<T>>
List<QueryResult<T>>
kNNQueryForObject(O queryObject, int k, DistanceFunction<O,T> distanceFunction)
          Performs a k-nearest neighbor query for the given object.
<T extends Distance<T>>
List<QueryResult<T>>
rangeQuery(Integer id, String epsilon, DistanceFunction<O,T> distanceFunction)
          Performs a range query for the given object ID with the given epsilon range and the according distance function.
<T extends Distance<T>>
List<QueryResult<T>>
reverseKNNQuery(Integer id, int k, DistanceFunction<O,T> distanceFunction)
          Performs a reverse k-nearest neighbor query for the given object ID.
 String[] setParameters(String[] args)
          Sets the values for the parameter bulk.
 String toString()
          Returns a string representation of this database.
 
Methods inherited from class de.lmu.ifi.dbs.elki.database.IndexDatabase
delete, delete, getLogicalPageAccess, getPhysicalReadAccess, getPhysicalWriteReadAccess, resetPageAccess
 
Methods inherited from class de.lmu.ifi.dbs.elki.database.AbstractDatabase
addDatabaseListener, associate, associateGlobally, deleteAssociations, dimensionality, fireObjectInserted, fireObjectRemoved, fireObjectsChanged, fireObjectsInserted, fireObjectsRemoved, get, getAssociation, getAssociations, getGlobalAssociation, getIDs, getObjects, isSet, isSetForAllObjects, isSetGlobally, iterator, partition, partition, randomSample, removeDatabaseListener, restoreID, setAssociations, setNewID, size
 
Methods inherited from class de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizable
addOption, checkGlobalParameterConstraints, deleteOption, description, description, getAttributeSettings, getParameters, getParameterValue, getPossibleOptions, inlineDescription, isSet, setParameters
 
Methods inherited from class de.lmu.ifi.dbs.elki.logging.AbstractLoggable
debugFine, debugFiner, debugFinest, exception, message, progress, progress, progress, verbose, verbose, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface de.lmu.ifi.dbs.elki.utilities.optionhandling.Parameterizable
checkGlobalParameterConstraints, getAttributeSettings, getParameters, getPossibleOptions, inlineDescription
 

Field Detail

INDEX_ID

public static final OptionID INDEX_ID
OptionID for INDEX_PARAM


INDEX_PARAM

private final ClassParameter<MetricalIndex> INDEX_PARAM
Parameter to specify the metrical index to use.

Key: -metricalindexdb.index


index

MetricalIndex<O extends DatabaseObject,D extends Distance<D>,N extends MetricalNode<N,E>,E extends MTreeEntry<D>> index
The metrical index storing the data.

Constructor Detail

MetricalIndexDatabase

public MetricalIndexDatabase()
Method Detail

insert

public Integer insert(ObjectAndAssociations<O> objectAndAssociations)
               throws UnableToComplyException
Calls the super method and afterwards inserts the specified object into the underlying index structure.

Specified by:
insert in interface Database<O extends DatabaseObject>
Overrides:
insert in class AbstractDatabase<O extends DatabaseObject>
Parameters:
objectAndAssociations - the object and its associations to be inserted
Returns:
the ID assigned to the inserted object
Throws:
UnableToComplyException - if database reached limit of storage capacity
See Also:
Database.insert(ObjectAndAssociations)

insert

public void insert(List<ObjectAndAssociations<O>> objectsAndAssociationsList)
            throws UnableToComplyException
Calls the super method and afterwards inserts the specified objects into the underlying index structure. If the option bulk load is enabled and the index structure is empty, a bulk load will be performed. Otherwise the objects will be inserted sequentially.

Specified by:
insert in interface Database<O extends DatabaseObject>
Overrides:
insert in class AbstractDatabase<O extends DatabaseObject>
Parameters:
objectsAndAssociationsList - the list of objects and their associations to be inserted
Throws:
UnableToComplyException - if initialization is not possible
See Also:
Database.insert(java.util.List)

rangeQuery

public <T extends Distance<T>> List<QueryResult<T>> rangeQuery(Integer id,
                                                               String epsilon,
                                                               DistanceFunction<O,T> distanceFunction)
Description copied from interface: Database
Performs a range query for the given object ID with the given epsilon range and the according distance function. The query result is in ascending order to the distance to the query object.

Parameters:
id - the ID of the query object
epsilon - the string representation of the query range
distanceFunction - the distance function that computes the distances beween the objects
Returns:
a List of the query results
See Also:
Database.rangeQuery(Integer,String,de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction)

kNNQueryForObject

public <T extends Distance<T>> List<QueryResult<T>> kNNQueryForObject(O queryObject,
                                                                      int k,
                                                                      DistanceFunction<O,T> distanceFunction)
Description copied from interface: Database
Performs a k-nearest neighbor query for the given object. The query result is in ascending order to the distance to the query object.

Parameters:
queryObject - the query object
k - the number of nearest neighbors to be returned
distanceFunction - the distance function that computes the distances beween the objects
Returns:
a List of the query results
See Also:
Database.kNNQueryForObject(DatabaseObject,int,de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction)

kNNQueryForID

public <T extends Distance<T>> List<QueryResult<T>> kNNQueryForID(Integer id,
                                                                  int k,
                                                                  DistanceFunction<O,T> distanceFunction)
Description copied from interface: Database
Performs a k-nearest neighbor query for the given object ID. The query result is in ascending order to the distance to the query object.

Parameters:
id - the ID of the query object
k - the number of nearest neighbors to be returned
distanceFunction - the distance function that computes the distances beween the objects
Returns:
a List of the query results
See Also:
Database.kNNQueryForID(Integer,int, de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction)

bulkKNNQueryForID

public <D extends Distance<D>> List<List<QueryResult<D>>> bulkKNNQueryForID(List<Integer> ids,
                                                                            int k,
                                                                            DistanceFunction<O,D> distanceFunction)
Description copied from interface: Database
Performs k-nearest neighbor queries for the given object IDs. The query result is in ascending order to the distance to the query object.

Parameters:
ids - the IDs of the query objects
k - the number of nearest neighbors to be returned
distanceFunction - the distance function that computes the distances beween the objects
Returns:
a List of List of the query results
See Also:
Database.bulkKNNQueryForID(java.util.List,int,de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction)

reverseKNNQuery

public <T extends Distance<T>> List<QueryResult<T>> reverseKNNQuery(Integer id,
                                                                    int k,
                                                                    DistanceFunction<O,T> distanceFunction)
Description copied from interface: Database
Performs a reverse k-nearest neighbor query for the given object ID. The query result is in ascending order to the distance to the query object.

Parameters:
id - the ID of the query object
k - the number of nearest neighbors to be returned
distanceFunction - the distance function that computes the distances beween the objects
Returns:
a List of the query results
See Also:
Database.reverseKNNQuery(Integer,int, de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction)

toString

public String toString()
Returns a string representation of this database.

Overrides:
toString in class Object
Returns:
a string representation of this database.

getIndex

public MetricalIndex<O,D,N,E> getIndex()
Returns the index of this database.

Specified by:
getIndex in class IndexDatabase<O extends DatabaseObject>
Returns:
the index of this database

setParameters

public String[] setParameters(String[] args)
                       throws ParameterException
Sets the values for the parameter bulk. If the parameters is not specified the default value is set.

Specified by:
setParameters in interface Parameterizable
Overrides:
setParameters in class AbstractParameterizable
Parameters:
args - parameters to set the attributes accordingly to
Returns:
String[] an array containing the unused parameters
Throws:
ParameterException - in case of wrong parameter-setting
See Also:
Parameterizable.setParameters(String[])

description

public String description()
Returns a short description of the database. (Such as: efficiency in space and time, index structure...)

Specified by:
description in interface Database<O extends DatabaseObject>
Specified by:
description in interface Parameterizable
Overrides:
description in class AbstractParameterizable
Returns:
a description of the database
See Also:
Parameterizable.description()

Release 0.1 (2008-07-10_1838)