net.obsearch.index.ghs.impl
Class Sketch64Long<O extends OBLong>

java.lang.Object
  extended by net.obsearch.index.AbstractOBIndex<O>
      extended by net.obsearch.index.pivot.AbstractPivotOBIndex<O>
          extended by net.obsearch.index.bucket.AbstractBucketIndex<O,B,Q,BC>
              extended by net.obsearch.index.sorter.AbstractBucketSorter<O,B,Q,BC,SketchProjection,CBitVector>
                  extended by net.obsearch.index.ghs.AbstractSketch64<O,BucketObjectLong<O>,OBQueryLong<O>,SleekBucketLong<O>>
                      extended by net.obsearch.index.ghs.impl.Sketch64Long<O>
All Implemented Interfaces:
Index<O>, IndexLong<O>

public final class Sketch64Long<O extends OBLong>
extends AbstractSketch64<O,BucketObjectLong<O>,OBQueryLong<O>,SleekBucketLong<O>>
implements IndexLong<O>


Nested Class Summary
protected  class Sketch64Long.KnnIterator
          Implements a knn graph iteration over all the dataset
 
Nested classes/interfaces inherited from class net.obsearch.index.bucket.AbstractBucketIndex
AbstractBucketIndex.BucketIterator
 
Field Summary
 
Fields inherited from class net.obsearch.index.ghs.AbstractSketch64
distortionStats, m, maskPivotSelector, pivotGrid
 
Fields inherited from class net.obsearch.index.sorter.AbstractBucketSorter
bucketCache, bucketPivotCount, kEstimators, projections, projectionStorage, userK
 
Fields inherited from class net.obsearch.index.bucket.AbstractBucketIndex
Buckets
 
Fields inherited from class net.obsearch.index.pivot.AbstractPivotOBIndex
intrinsicDimensionalityPairs, pivots, pivotSelector
 
Fields inherited from class net.obsearch.index.AbstractOBIndex
A, fact, isFrozen, stats, type
 
Fields inherited from interface net.obsearch.Index
ID_SIZE
 
Constructor Summary
Sketch64Long()
           
Sketch64Long(Class<O> type, IncrementalPairPivotSelector<O> pivotSelector, int m)
          Create a new Sketch64Long with m bytes.
 
Method Summary
protected  double distance(O a, O b)
           
 long[] fullMatchLite(O query, boolean filterSame)
          This method returns a list of all the distances of the query against the DB.
 BucketObjectLong<O> getBucket(O object)
          Returns the bucket information for the given object.
protected  int getCPSize()
          Return the compact representation size
protected  AbstractOBQuery<O> getKQuery(O object, int k)
          Returns a k query for the given object.
protected  Class<CBitVector> getPInstance()
           
 SketchProjection getProjection(BucketObjectLong<O> bucket)
          Compute the sketch for the given object.
protected  SleekBucketLong<O> instantiateBucketContainer(byte[] data, byte[] address)
          Get a bucket container from the given data.
 Iterator<List<OBQueryLong<O>>> knnGraph(int k, long r)
          Performs a knn graph search
protected  void maxKEstimationAux(O object)
          Get the kMax closest objects.
protected  int primitiveDataTypeSize()
          Return the size in bytes of the underlying primitive datatype.
 void searchOB(O object, long r, Filter<O> filter, OBPriorityQueueLong<O> result)
          Searches the Index and returns OBResult (ID, OB and distance) elements that are closer to "object".
 void searchOB(O object, long r, OBPriorityQueueLong<O> result)
          Searches the Index and returns OBResult (ID, OB and distance) elements that are closer to "object".
 
Methods inherited from class net.obsearch.index.ghs.AbstractSketch64
bytesToCompactRepresentation, compactRepresentationToBytes, debugDist, freeze, updateDistance
 
Methods inherited from class net.obsearch.index.sorter.AbstractBucketSorter
bucketStats, calculateEstimators, close, estimateK, freezeDefault, getAddress, getAllObjects, getBucketContainer, getBucketPivotCount, getExpectedEP, getMaxK, init, initByteArrayBuckets, initCache, insertBucket, insertBucketBulk, loadMasks, maxKEstimation, printEstimation, searchBuckets, setExpectedError, setKAlpha, setMaxK, setSampleSize
 
Methods inherited from class net.obsearch.index.bucket.AbstractBucketIndex
debug, deleteAux, exists, getBuckets, getObjectFreeze, idMap, insertAux, insertAuxBulk, iterateBuckets
 
Methods inherited from class net.obsearch.index.pivot.AbstractPivotOBIndex
calculateIntrinsicDimensionality, createPivotsArray, getObjects, getPivotCount, selectPivots
 
Methods inherited from class net.obsearch.index.AbstractOBIndex
assertFrozen, bytesToObject, bytesToObject, clearACache, databaseSize, delete, emptyPivotsArray, findAux, getBox, getObject, getStats, getType, initStorageDevices, insert, insert, insertBulk, insertBulk, intrinsicDimensionality, isFrozen, isPreFreeze, isPreFreezeCheck, loadObject, loadPivots, objectToByteBuffer, objectToBytes, resetStats, serializePivots, setFixedRecord, setFixedRecord, setIdAutoGeneration, setPreFreeze, setPreFreezeCheck, totalBoxes
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface net.obsearch.Index
close, databaseSize, debug, delete, exists, freeze, getBox, getObject, getStats, getType, init, insert, insert, insertBulk, insertBulk, isFrozen, loadObject, resetStats, setPreFreezeCheck, totalBoxes
 

Constructor Detail

Sketch64Long

public Sketch64Long(Class<O> type,
                    IncrementalPairPivotSelector<O> pivotSelector,
                    int m)
             throws OBStorageException,
                    OBException,
                    IOException
Create a new Sketch64Long with m bytes.

Parameters:
type - Type of object that will be stored
pivotSelector - Pivot selection strategy to be employed.
m - The number of bits
bucketPivotCount - Number of pivots per bucket
Throws:
OBStorageException
OBException
IOException

Sketch64Long

public Sketch64Long()
Method Detail

getBucket

public BucketObjectLong<O> getBucket(O object)
                                             throws OBException,
                                                    InstantiationException,
                                                    IllegalAccessException
Description copied from class: AbstractBucketIndex
Returns the bucket information for the given object.

Specified by:
getBucket in class AbstractBucketIndex<O extends OBLong,BucketObjectLong<O extends OBLong>,OBQueryLong<O extends OBLong>,SleekBucketLong<O extends OBLong>>
Parameters:
object - The object that will be calculated
Returns:
The bucket information for the given object.
Throws:
IllegalAccessException
OBException
InstantiationException

getProjection

public SketchProjection getProjection(BucketObjectLong<O> bucket)
                               throws OBException
Compute the sketch for the given object.

Specified by:
getProjection in class AbstractBucketSorter<O extends OBLong,BucketObjectLong<O extends OBLong>,OBQueryLong<O extends OBLong>,SleekBucketLong<O extends OBLong>,SketchProjection,CBitVector>
Throws:
OBException

instantiateBucketContainer

protected SleekBucketLong<O> instantiateBucketContainer(byte[] data,
                                                        byte[] address)
                                                                throws InstantiationException,
                                                                       IllegalAccessException,
                                                                       OBException
Description copied from class: AbstractBucketIndex
Get a bucket container from the given data.

Specified by:
instantiateBucketContainer in class AbstractBucketIndex<O extends OBLong,BucketObjectLong<O extends OBLong>,OBQueryLong<O extends OBLong>,SleekBucketLong<O extends OBLong>>
Parameters:
data - The data from which the bucket container will be loaded.
Returns:
A new bucket container ready to be used.
Throws:
InstantiationException
IllegalAccessException
OBException

primitiveDataTypeSize

protected int primitiveDataTypeSize()
Description copied from class: AbstractBucketIndex
Return the size in bytes of the underlying primitive datatype.

Specified by:
primitiveDataTypeSize in class AbstractBucketIndex<O extends OBLong,BucketObjectLong<O extends OBLong>,OBQueryLong<O extends OBLong>,SleekBucketLong<O extends OBLong>>
Returns:

searchOB

public void searchOB(O object,
                     long r,
                     OBPriorityQueueLong<O> result)
              throws NotFrozenException,
                     InstantiationException,
                     IllegalIdException,
                     IllegalAccessException,
                     OutOfRangeException,
                     OBException
Description copied from interface: IndexLong
Searches the Index and returns OBResult (ID, OB and distance) elements that are closer to "object". The closest element is at the beginning of the list and the farthest elements is at the end of the list. You can control the size of the resulting set when you create the object "result". This becomes the k parameter of the search.

Specified by:
searchOB in interface IndexLong<O extends OBLong>
Parameters:
object - The object that has to be searched
r - The range to be used
result - A priority queue that will hold the result
Throws:
NotFrozenException - if the index has not been frozen.
InstantiationException - If there is a problem when instantiating objects O
IllegalIdException - This exception is left as a Debug flag. If you receive this exception please report the problem to: http://code.google.com/p/obsearch/issues/list
IllegalAccessException - If there is a problem when instantiating objects O
OutOfRangeException - If the distance of any object to any other object exceeds the range defined by the user.
OBException - User generated exception

getKQuery

protected AbstractOBQuery<O> getKQuery(O object,
                                       int k)
                                               throws OBException,
                                                      InstantiationException,
                                                      IllegalAccessException
Description copied from class: AbstractBucketSorter
Returns a k query for the given object.

Specified by:
getKQuery in class AbstractBucketSorter<O extends OBLong,BucketObjectLong<O extends OBLong>,OBQueryLong<O extends OBLong>,SleekBucketLong<O extends OBLong>,SketchProjection,CBitVector>
Parameters:
object - (query object)
k - the number of objects to accept in the query.
Returns:
Throws:
OBException
InstantiationException
IllegalAccessException

searchOB

public void searchOB(O object,
                     long r,
                     Filter<O> filter,
                     OBPriorityQueueLong<O> result)
              throws NotFrozenException,
                     InstantiationException,
                     IllegalIdException,
                     IllegalAccessException,
                     OutOfRangeException,
                     OBException
Description copied from interface: IndexLong
Searches the Index and returns OBResult (ID, OB and distance) elements that are closer to "object". The closest element is at the beginning of the list and the farthest elements is at the end of the list. You can control the size of the resulting set when you create the object "result". This becomes the k parameter of the search. The parameter "filter" is used to remove unwanted objects from the result (a select where clause). Users are responsible to implement at least one filter that can be used with their O.

Specified by:
searchOB in interface IndexLong<O extends OBLong>
Parameters:
object - The object that has to be searched
r - The range to be used
result - A priority queue that will hold the result
Throws:
NotFrozenException - if the index has not been frozen.
InstantiationException - If there is a problem when instantiating objects O
IllegalIdException - This exception is left as a Debug flag. If you receive this exception please report the problem to: http://code.google.com/p/obsearch/issues/list
IllegalAccessException - If there is a problem when instantiating objects O
OutOfRangeException - If the distance of any object to any other object exceeds the range defined by the user.
OBException - User generated exception

knnGraph

public Iterator<List<OBQueryLong<O>>> knnGraph(int k,
                                               long r)
Performs a knn graph search


fullMatchLite

public long[] fullMatchLite(O query,
                            boolean filterSame)
                     throws OBException,
                            IllegalAccessException,
                            InstantiationException
This method returns a list of all the distances of the query against the DB. This helps to calculate EP values in a cheaper way. results that are equal to the original object are added as Long.MAX_VALUE

Specified by:
fullMatchLite in interface IndexLong<O extends OBLong>
Parameters:
query -
filterSame - if True we do not return objects o such that query.equals(o)
Returns:
Throws:
OBException
InstantiationException
IllegalAccessException

maxKEstimationAux

protected void maxKEstimationAux(O object)
                          throws OBException,
                                 InstantiationException,
                                 IllegalAccessException
Get the kMax closest objects. Count how many different bucket ids are there for each k and fill in accordingly the tables.

Specified by:
maxKEstimationAux in class AbstractBucketSorter<O extends OBLong,BucketObjectLong<O extends OBLong>,OBQueryLong<O extends OBLong>,SleekBucketLong<O extends OBLong>,SketchProjection,CBitVector>
Parameters:
object -
Throws:
OBException
InstantiationException
IllegalAccessException

distance

protected double distance(O a,
                          O b)
                   throws OBException
Overrides:
distance in class AbstractOBIndex<O extends OBLong>
Throws:
OBException

getCPSize

protected int getCPSize()
Description copied from class: AbstractBucketSorter
Return the compact representation size

Specified by:
getCPSize in class AbstractBucketSorter<O extends OBLong,BucketObjectLong<O extends OBLong>,OBQueryLong<O extends OBLong>,SleekBucketLong<O extends OBLong>,SketchProjection,CBitVector>
Returns:

getPInstance

protected Class<CBitVector> getPInstance()
Specified by:
getPInstance in class AbstractBucketSorter<O extends OBLong,BucketObjectLong<O extends OBLong>,OBQueryLong<O extends OBLong>,SleekBucketLong<O extends OBLong>,SketchProjection,CBitVector>


Copyright © 2007-2011 Arnoldo Jose Muller Molina. All Rights Reserved.