# HG changeset patch # User mas01mc # Date 1233344691 0 # Node ID aa715b3e18db5717ff2c9313098a657aa889b806 # Parent e532666226bc7bd5df056d71560931e371eaffce Completed audiodb_datum_qpointers_partial(), fixed bug that was scribbling over pre-computed l2norms when points arrived in original less order, switched to greater order and all is fixed. diff -r e532666226bc -r aa715b3e18db audioDB-internals.h --- 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 *allowed_keys; - std::set * set; - std::priority_queue *exact_evaluation_queue; + std::set > * set; + std::priority_queue, greater > *exact_evaluation_queue; LSH *lsh; } adb_qstate_internal_t; diff -r e532666226bc -r aa715b3e18db pointpair.h --- 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); diff -r e532666226bc -r aa715b3e18db query-indexed.cpp --- 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; + qstate->exact_evaluation_queue = new std::priority_queue, greater >; qstate->set = new std::set >; add_point_func = &audiodb_index_add_point_exact; } diff -r e532666226bc -r aa715b3e18db query.cpp --- 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 ppairs(*qstate->exact_evaluation_queue); + std::priority_queue, greater > 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);