changeset 530:aa715b3e18db multiprobeLSH

Completed audiodb_datum_qpointers_partial(), fixed bug that was scribbling over pre-computed l2norms when points arrived in original less<PointPair> order, switched to greater<PointPair> order and all is fixed.
author mas01mc
date Fri, 30 Jan 2009 19:44:51 +0000
parents e532666226bc
children ddf763553175
files audioDB-internals.h pointpair.h query-indexed.cpp query.cpp
diffstat 4 files changed, 7 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/audioDB-internals.h	Fri Jan 30 14:58:35 2009 +0000
+++ b/audioDB-internals.h	Fri Jan 30 19:44:51 2009 +0000
@@ -51,8 +51,8 @@
 typedef struct adb_qstate_internal {
   Accumulator *accumulator;
   std::set<std::string> *allowed_keys;
-  std::set<PointPair> * set;
-  std::priority_queue<PointPair> *exact_evaluation_queue;
+  std::set<PointPair, less<PointPair> > * set;
+  std::priority_queue<PointPair, vector<PointPair>, greater<PointPair> > *exact_evaluation_queue;
   LSH *lsh;
 } adb_qstate_internal_t;
 
--- a/pointpair.h	Fri Jan 30 14:58:35 2009 +0000
+++ b/pointpair.h	Fri Jan 30 19:44:51 2009 +0000
@@ -8,3 +8,4 @@
 };
 
 bool operator<(const PointPair& a, const PointPair& b);
+bool operator>(const PointPair& a, const PointPair& b);
--- a/query-indexed.cpp	Fri Jan 30 14:58:35 2009 +0000
+++ b/query-indexed.cpp	Fri Jan 30 19:44:51 2009 +0000
@@ -100,7 +100,7 @@
   if(spec->qid.flags & ADB_QID_FLAG_ALLOW_FALSE_POSITIVES) {
     add_point_func = &audiodb_index_add_point_approximate;  
   } else {
-    qstate->exact_evaluation_queue = new std::priority_queue<PointPair>;
+    qstate->exact_evaluation_queue = new std::priority_queue<PointPair, vector<PointPair>, greater<PointPair> >;
     qstate->set = new std::set<PointPair, less<PointPair> >;
     add_point_func = &audiodb_index_add_point_exact;
   }
--- a/query.cpp	Fri Jan 30 14:58:35 2009 +0000
+++ b/query.cpp	Fri Jan 30 19:44:51 2009 +0000
@@ -285,7 +285,7 @@
 				    adb_qstate_internal_t *qstate){
   uint32_t nvectors = d->nvectors;
   qpointers->nvectors = nvectors;
-  std::priority_queue<PointPair> ppairs(*qstate->exact_evaluation_queue);
+  std::priority_queue<PointPair, std::vector<PointPair>, greater<PointPair> > ppairs(*qstate->exact_evaluation_queue);
   
   size_t vector_size = nvectors * sizeof(double) * d->dim;
   *vector_data = new double[vector_size];
@@ -523,8 +523,8 @@
         delete qstate->set;
         return 1;
       }
-      //      if(audiodb_datum_qpointers_partial(&d, sequence_length, &dbdata, &dbdata_pointer, &dbpointers, qstate)) {
-      if(audiodb_datum_qpointers(&d, sequence_length, &dbdata, &dbdata_pointer, &dbpointers)) {
+      if(audiodb_datum_qpointers_partial(&d, sequence_length, &dbdata, &dbdata_pointer, &dbpointers, qstate)) {
+	//if(audiodb_datum_qpointers(&d, sequence_length, &dbdata, &dbdata_pointer, &dbpointers)) {
         delete qstate->exact_evaluation_queue;
         delete qstate->set;
         audiodb_free_datum(&d);