Mercurial > hg > audiodb
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);