Interface QueryOptimizer

  • All Known Implementing Classes:
    DisableQueryOptimizer, EmpiricalQueryOptimizer

    public interface QueryOptimizer
    Interface to automatically add indexes to a database when no suitable indexes have been found. The dummy implementation DisableQueryOptimizer can be used to disable this functionality, for example for benchmarking purposes.
    Since:
    0.8.0
    Author:
    Erich Schubert
    • Method Summary

      All Methods Instance Methods Default Methods 
      Modifier and Type Method Description
      default <O> elki.database.query.distance.DistanceQuery<O> getDistanceQuery​(elki.database.relation.Relation<? extends O> relation, elki.distance.Distance<? super O> distanceFunction, int flags)
      Optimize a distance query for this relation.
      default <O> elki.database.query.similarity.SimilarityQuery<O> getSimilarityQuery​(elki.database.relation.Relation<? extends O> relation, elki.similarity.Similarity<? super O> similarityFunction, int flags)
      Optimize a similarity query for this relation.
      default <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.
      default <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.
      default <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.
      default <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.
      default <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.
      default <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.
      default <O> elki.database.query.rknn.RKNNSearcher<elki.database.ids.DBIDRef> rkNNByDBID​(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)
      Optimize a reverse nearest neighbors query for this relation.
      default <O> elki.database.query.rknn.RKNNSearcher<O> rkNNByObject​(elki.database.relation.Relation<? extends O> relation, elki.database.query.distance.DistanceQuery<O> distanceQuery, int maxk, int flags)
      Optimize a reverse nearest neighbors query for this relation.
      default <O> elki.database.query.range.RangeSearcher<elki.database.ids.DBIDRef> similarityRangeByDBID​(elki.database.relation.Relation<? extends O> relation, elki.database.query.similarity.SimilarityQuery<O> simQuery, double maxrange, int flags)
      Optimize a range query for this relation.
      default <O> elki.database.query.range.RangeSearcher<O> similarityRangeByObject​(elki.database.relation.Relation<? extends O> relation, elki.database.query.similarity.SimilarityQuery<O> simQuery, double maxrange, int flags)
      Optimize a range query for this relation.
    • Method Detail

      • getSimilarityQuery

        default <O> elki.database.query.similarity.SimilarityQuery<O> getSimilarityQuery​(elki.database.relation.Relation<? extends O> relation,
                                                                                         elki.similarity.Similarity<? super O> similarityFunction,
                                                                                         int flags)
        Optimize a similarity query for this relation.
        Type Parameters:
        O - Object type
        Parameters:
        relation - Data relation
        similarityFunction - Similarity function
        flags - Optimizer flags
        Returns:
        optimized query, if possible
      • getDistanceQuery

        default <O> elki.database.query.distance.DistanceQuery<O> getDistanceQuery​(elki.database.relation.Relation<? extends O> relation,
                                                                                   elki.distance.Distance<? super O> distanceFunction,
                                                                                   int flags)
        Optimize a distance query for this relation.
        Type Parameters:
        O - Object type
        Parameters:
        relation - Data relation
        distanceFunction - Distance function
        flags - Optimizer flags
        Returns:
        optimized query, if possible
      • kNNByObject

        default <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.
        Type Parameters:
        O - Object type
        Parameters:
        relation - Data relation
        distanceQuery - distance query
        maxk - Maximum k
        flags - Optimizer flags
        Returns:
        optimized query, if possible
      • kNNByDBID

        default <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.
        Type Parameters:
        O - Object type
        Parameters:
        relation - Data relation
        distanceQuery - distance query
        maxk - Maximum k
        flags - Optimizer flags
        Returns:
        optimized query, if possible
      • rangeByObject

        default <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.
        Type Parameters:
        O - Object type
        Parameters:
        relation - Data relation
        distanceQuery - distance query
        maxrange - Maximum range
        flags - Optimizer flags
        Returns:
        optimized query, if possible
      • rangeByDBID

        default <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.
        Type Parameters:
        O - Object type
        Parameters:
        relation - Data relation
        distanceQuery - distance query
        maxrange - Maximum range
        flags - Optimizer flags
        Returns:
        optimized query, if possible
      • similarityRangeByObject

        default <O> elki.database.query.range.RangeSearcher<O> similarityRangeByObject​(elki.database.relation.Relation<? extends O> relation,
                                                                                       elki.database.query.similarity.SimilarityQuery<O> simQuery,
                                                                                       double maxrange,
                                                                                       int flags)
        Optimize a range query for this relation.
        Type Parameters:
        O - Object type
        Parameters:
        relation - Data relation
        simQuery - similarity query
        maxrange - Maximum range
        flags - Optimizer flags
        Returns:
        optimized query, if possible
      • similarityRangeByDBID

        default <O> elki.database.query.range.RangeSearcher<elki.database.ids.DBIDRef> similarityRangeByDBID​(elki.database.relation.Relation<? extends O> relation,
                                                                                                             elki.database.query.similarity.SimilarityQuery<O> simQuery,
                                                                                                             double maxrange,
                                                                                                             int flags)
        Optimize a range query for this relation.
        Type Parameters:
        O - Object type
        Parameters:
        relation - Data relation
        simQuery - similarity query
        maxrange - Maximum range
        flags - Optimizer flags
        Returns:
        optimized query, if possible
      • rkNNByObject

        default <O> elki.database.query.rknn.RKNNSearcher<O> rkNNByObject​(elki.database.relation.Relation<? extends O> relation,
                                                                          elki.database.query.distance.DistanceQuery<O> distanceQuery,
                                                                          int maxk,
                                                                          int flags)
        Optimize a reverse nearest neighbors query for this relation.
        Type Parameters:
        O - Object type
        Parameters:
        relation - Data relation
        distanceQuery - distance query
        flags - Optimizer flags
        maxk - Maximum k to query
        Returns:
        optimized query, if possible
      • rkNNByDBID

        default <O> elki.database.query.rknn.RKNNSearcher<elki.database.ids.DBIDRef> rkNNByDBID​(elki.database.relation.Relation<? extends O> relation,
                                                                                                elki.database.query.distance.DistanceQuery<O> distanceQuery,
                                                                                                int maxk,
                                                                                                int flags)
        Optimize a reverse nearest neighbors query for this relation.
        Type Parameters:
        O - Object type
        Parameters:
        relation - Data relation
        distanceQuery - distance query
        flags - Optimizer flags
        maxk - Maximum k to query
        Returns:
        optimized query, if possible
      • priorityByObject

        default <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.
        Type Parameters:
        O - Object type
        Parameters:
        relation - Data relation
        distanceQuery - distance query
        maxrange - Maximum range
        flags - Optimizer flags
        Returns:
        optimized query, if possible
      • priorityByDBID

        default <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.
        Type Parameters:
        O - Object type
        Parameters:
        relation - Data relation
        distanceQuery - distance query
        maxrange - Maximum range
        flags - Optimizer flags
        Returns:
        optimized query, if possible