Package elki.index.projected
Class ProjectedIndex<O,I>
- java.lang.Object
-
- elki.index.projected.ProjectedIndex<O,I>
-
- Type Parameters:
O- Outer object typeI- Inner object type
- All Implemented Interfaces:
elki.index.Index,elki.index.KNNIndex<O>,elki.index.RangeIndex<O>,elki.index.RKNNIndex<O>
public class ProjectedIndex<O,I> extends java.lang.Object implements elki.index.KNNIndex<O>, elki.index.RKNNIndex<O>, elki.index.RangeIndex<O>Index data in an arbitrary projection.Note: be careful when using this class, as it may/will yield incorrect distances, depending on your projection! It may be desirable to use a modified index that corrects for this error, or supports specific combinations only.
See
LatLngAsECEFIndexandLngLatAsECEFIndexfor example indexes that support only a specific (good) combination.FIXME: add refinement to bulk queries!
- Since:
- 0.6.0
- Author:
- Erich Schubert
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classProjectedIndex.Factory<O,I>Index factory.(package private) classProjectedIndex.ProjectedKNNByDBIDClass to proxy kNN queries.(package private) classProjectedIndex.ProjectedKNNByObjectClass to proxy kNN queries.(package private) classProjectedIndex.ProjectedRangeByDBIDClass to proxy range queries.(package private) classProjectedIndex.ProjectedRangeByObjectClass to proxy range queries.(package private) classProjectedIndex.ProjectedRKNNByDBIDClass to proxy RkNN queries.(package private) classProjectedIndex.ProjectedRKNNByObjectClass to proxy RkNN queries.
-
Field Summary
Fields Modifier and Type Field Description (package private) elki.index.IndexinnerInner index.(package private) doublekmultiMultiplier for k.private static elki.logging.LoggingLOGClass logger(package private) booleannorefineRefinement disable flag.(package private) elki.data.projection.Projection<O,I>projProjection.(package private) elki.logging.statistics.CounterrefinementsCount the number of distance refinements computed.(package private) elki.database.relation.Relation<? extends O>relationThe relation we predend to index.(package private) elki.database.relation.Relation<I>viewThe view that we really index.
-
Constructor Summary
Constructors Constructor Description ProjectedIndex(elki.database.relation.Relation<? extends O> relation, elki.data.projection.Projection<O,I> proj, elki.database.relation.Relation<I> view, elki.index.Index inner, boolean norefine, double kmulti)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidcountRefinement()Count a single distance refinement.voidinitialize()elki.database.query.knn.KNNSearcher<elki.database.ids.DBIDRef>kNNByDBID(elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)elki.database.query.knn.KNNSearcher<O>kNNByObject(elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)voidlogStatistics()elki.database.query.range.RangeSearcher<elki.database.ids.DBIDRef>rangeByDBID(elki.database.query.distance.DistanceQuery<O> distanceQuery, double maxradius, int flags)elki.database.query.range.RangeSearcher<O>rangeByObject(elki.database.query.distance.DistanceQuery<O> distanceQuery, double maxradius, int flags)elki.database.query.rknn.RKNNSearcher<elki.database.ids.DBIDRef>rkNNByDBID(elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)elki.database.query.rknn.RKNNSearcher<O>rkNNByObject(elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)
-
-
-
Field Detail
-
LOG
private static final elki.logging.Logging LOG
Class logger
-
inner
elki.index.Index inner
Inner index.
-
relation
elki.database.relation.Relation<? extends O> relation
The relation we predend to index.
-
view
elki.database.relation.Relation<I> view
The view that we really index.
-
norefine
boolean norefine
Refinement disable flag.
-
kmulti
double kmulti
Multiplier for k.
-
refinements
final elki.logging.statistics.Counter refinements
Count the number of distance refinements computed.
-
-
Constructor Detail
-
ProjectedIndex
public ProjectedIndex(elki.database.relation.Relation<? extends O> relation, elki.data.projection.Projection<O,I> proj, elki.database.relation.Relation<I> view, elki.index.Index inner, boolean norefine, double kmulti)
Constructor.- Parameters:
relation- Relation to index.proj- Projection to use.view- View to use.inner- Index to wrap.norefine- Refinement disable flag.kmulti- Multiplicator for k
-
-
Method Detail
-
countRefinement
private void countRefinement()
Count a single distance refinement.
-
initialize
public void initialize()
- Specified by:
initializein interfaceelki.index.Index
-
logStatistics
public void logStatistics()
- Specified by:
logStatisticsin interfaceelki.index.Index
-
kNNByObject
public elki.database.query.knn.KNNSearcher<O> kNNByObject(elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)
- Specified by:
kNNByObjectin interfaceelki.index.KNNIndex<O>
-
kNNByDBID
public elki.database.query.knn.KNNSearcher<elki.database.ids.DBIDRef> kNNByDBID(elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)
- Specified by:
kNNByDBIDin interfaceelki.index.KNNIndex<O>
-
rangeByObject
public elki.database.query.range.RangeSearcher<O> rangeByObject(elki.database.query.distance.DistanceQuery<O> distanceQuery, double maxradius, int flags)
- Specified by:
rangeByObjectin interfaceelki.index.RangeIndex<O>
-
rangeByDBID
public elki.database.query.range.RangeSearcher<elki.database.ids.DBIDRef> rangeByDBID(elki.database.query.distance.DistanceQuery<O> distanceQuery, double maxradius, int flags)
- Specified by:
rangeByDBIDin interfaceelki.index.RangeIndex<O>
-
rkNNByObject
public elki.database.query.rknn.RKNNSearcher<O> rkNNByObject(elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)
- Specified by:
rkNNByObjectin interfaceelki.index.RKNNIndex<O>
-
-