Package elki.database.query
Class EmpiricalQueryOptimizer
- java.lang.Object
-
- elki.database.query.EmpiricalQueryOptimizer
-
- All Implemented Interfaces:
QueryOptimizer
@Alias("auto") public class EmpiricalQueryOptimizer extends java.lang.Object implements QueryOptimizerClass to automatically add indexes to a database.- Since:
- 0.8.0
- Author:
- Erich Schubert
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.reflect.Constructor<? extends elki.index.Index>coverIndexcover tree index class.private java.lang.reflect.Constructor<? extends elki.index.Index>kdIndexk-d-tree index class.private java.lang.reflect.Constructor<? extends elki.index.KNNIndex<?>>knnIndexkNN preprocessor class.private static elki.logging.LoggingLOGClass logger.private java.lang.reflect.Constructor<? extends elki.index.Index>matrixIndexDistance matrix index class.private static longMEGAMegabytes for formatting memory.private java.lang.reflect.Constructor<? extends elki.index.Index>vpIndexvp tree index class.
-
Constructor Summary
Constructors Constructor Description EmpiricalQueryOptimizer()Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static java.lang.StringformatMemory(long mem)Format a memory amount.<O> elki.database.query.distance.DistanceQuery<O>getDistanceQuery(elki.database.relation.Relation<? extends O> relation, elki.distance.Distance<? super O> distance, int flags)Optimize a distance query for this relation.private static longgetFreeMemory()Get the currently free amount of memory.<O> elki.database.query.knn.KNNSearcher<elki.database.ids.DBIDRef>kNNByDBID(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)Optimize a kNN query for this relation.<O> elki.database.query.knn.KNNSearcher<O>kNNByObject(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)Optimize a kNN query for this relation.private <O> elki.index.DistancePriorityIndex<O>makeCoverTree(elki.database.relation.Relation<? extends O> relation, elki.distance.Distance<? super O> distance, int leafsize)private <O> elki.index.DistancePriorityIndex<O>makeKDTree(elki.database.relation.Relation<? extends O> relation, elki.distance.Distance<? super O> distance, int k)private <O> elki.index.KNNIndex<O>makeKnnPreprocessor(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)Make a knn preprocessor.private <O> elki.index.DistancePriorityIndex<O>makeMatrixIndex(elki.database.relation.Relation<? extends O> relation, elki.distance.Distance<? super O> distance)private <O> elki.index.DistancePriorityIndex<O>makeVPTree(elki.database.relation.Relation<? extends O> relation, elki.distance.Distance<? super O> distance, int leafsize)<O> elki.database.query.PrioritySearcher<elki.database.ids.DBIDRef>priorityByDBID(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, double maxrange, int flags)Optimize a distance priority search for this relation.<O> elki.database.query.PrioritySearcher<O>priorityByObject(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, double maxrange, int flags)Optimize a distance priority search for this relation.<O> elki.database.query.range.RangeSearcher<elki.database.ids.DBIDRef>rangeByDBID(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, double maxrange, int flags)Optimize a range query for this relation.<O> elki.database.query.range.RangeSearcher<O>rangeByObject(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, double maxrange, int flags)Optimize a range query for this relation.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface elki.database.query.QueryOptimizer
getSimilarityQuery, rkNNByDBID, rkNNByObject, similarityRangeByDBID, similarityRangeByObject
-
-
-
-
Field Detail
-
LOG
private static final elki.logging.Logging LOG
Class logger.
-
MEGA
private static final long MEGA
Megabytes for formatting memory.- See Also:
- Constant Field Values
-
matrixIndex
private final java.lang.reflect.Constructor<? extends elki.index.Index> matrixIndex
Distance matrix index class.
-
knnIndex
private final java.lang.reflect.Constructor<? extends elki.index.KNNIndex<?>> knnIndex
kNN preprocessor class.
-
coverIndex
private final java.lang.reflect.Constructor<? extends elki.index.Index> coverIndex
cover tree index class.
-
vpIndex
private final java.lang.reflect.Constructor<? extends elki.index.Index> vpIndex
vp tree index class.
-
kdIndex
private final java.lang.reflect.Constructor<? extends elki.index.Index> kdIndex
k-d-tree index class.
-
-
Method Detail
-
getDistanceQuery
public <O> elki.database.query.distance.DistanceQuery<O> getDistanceQuery(elki.database.relation.Relation<? extends O> relation, elki.distance.Distance<? super O> distance, int flags)Description copied from interface:QueryOptimizerOptimize a distance query for this relation.- Specified by:
getDistanceQueryin interfaceQueryOptimizer- Type Parameters:
O- Object type- Parameters:
relation- Data relationdistance- Distance functionflags- Optimizer flags- Returns:
- optimized query, if possible
-
kNNByObject
public <O> elki.database.query.knn.KNNSearcher<O> kNNByObject(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)Description copied from interface:QueryOptimizerOptimize a kNN query for this relation.- Specified by:
kNNByObjectin interfaceQueryOptimizer- Type Parameters:
O- Object type- Parameters:
relation- Data relationdistanceQuery- distance querymaxk- Maximum kflags- Optimizer flags- Returns:
- optimized query, if possible
-
kNNByDBID
public <O> elki.database.query.knn.KNNSearcher<elki.database.ids.DBIDRef> kNNByDBID(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)Description copied from interface:QueryOptimizerOptimize a kNN query for this relation.- Specified by:
kNNByDBIDin interfaceQueryOptimizer- Type Parameters:
O- Object type- Parameters:
relation- Data relationdistanceQuery- distance querymaxk- Maximum kflags- Optimizer flags- Returns:
- optimized query, if possible
-
rangeByObject
public <O> elki.database.query.range.RangeSearcher<O> rangeByObject(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, double maxrange, int flags)Description copied from interface:QueryOptimizerOptimize a range query for this relation.- Specified by:
rangeByObjectin interfaceQueryOptimizer- Type Parameters:
O- Object type- Parameters:
relation- Data relationdistanceQuery- distance querymaxrange- Maximum rangeflags- Optimizer flags- Returns:
- optimized query, if possible
-
rangeByDBID
public <O> elki.database.query.range.RangeSearcher<elki.database.ids.DBIDRef> rangeByDBID(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, double maxrange, int flags)Description copied from interface:QueryOptimizerOptimize a range query for this relation.- Specified by:
rangeByDBIDin interfaceQueryOptimizer- Type Parameters:
O- Object type- Parameters:
relation- Data relationdistanceQuery- distance querymaxrange- Maximum rangeflags- Optimizer flags- Returns:
- optimized query, if possible
-
priorityByObject
public <O> elki.database.query.PrioritySearcher<O> priorityByObject(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, double maxrange, int flags)Description copied from interface:QueryOptimizerOptimize a distance priority search for this relation.- Specified by:
priorityByObjectin interfaceQueryOptimizer- Type Parameters:
O- Object type- Parameters:
relation- Data relationdistanceQuery- distance querymaxrange- Maximum rangeflags- Optimizer flags- Returns:
- optimized query, if possible
-
priorityByDBID
public <O> elki.database.query.PrioritySearcher<elki.database.ids.DBIDRef> priorityByDBID(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, double maxrange, int flags)Description copied from interface:QueryOptimizerOptimize a distance priority search for this relation.- Specified by:
priorityByDBIDin interfaceQueryOptimizer- Type Parameters:
O- Object type- Parameters:
relation- Data relationdistanceQuery- distance querymaxrange- Maximum rangeflags- Optimizer flags- Returns:
- optimized query, if possible
-
makeMatrixIndex
private <O> elki.index.DistancePriorityIndex<O> makeMatrixIndex(elki.database.relation.Relation<? extends O> relation, elki.distance.Distance<? super O> distance)
-
makeCoverTree
private <O> elki.index.DistancePriorityIndex<O> makeCoverTree(elki.database.relation.Relation<? extends O> relation, elki.distance.Distance<? super O> distance, int leafsize)
-
makeVPTree
private <O> elki.index.DistancePriorityIndex<O> makeVPTree(elki.database.relation.Relation<? extends O> relation, elki.distance.Distance<? super O> distance, int leafsize)
-
makeKDTree
private <O> elki.index.DistancePriorityIndex<O> makeKDTree(elki.database.relation.Relation<? extends O> relation, elki.distance.Distance<? super O> distance, int k)
-
makeKnnPreprocessor
private <O> elki.index.KNNIndex<O> makeKnnPreprocessor(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)Make a knn preprocessor.- Type Parameters:
O- Object type- Parameters:
relation- Data relationdistanceQuery- distance querymaxk- Maximum kflags- Optimizer flags- Returns:
- knn preprocessor
-
getFreeMemory
private static long getFreeMemory()
Get the currently free amount of memory.- Returns:
- Free memory
-
formatMemory
private static java.lang.String formatMemory(long mem)
Format a memory amount.- Parameters:
mem- Memory- Returns:
- Memory amount
-
-