annotate libtests/0025/prog1.c @ 544:283b412083db multiprobeLSH

A fix for using_query_point with query_by_key (i.e. not by file). This code path still loads the entire query file, even if using one vector. Loading of query data needs better rationalization.
author mas01mc
date Sun, 08 Feb 2009 06:41:55 +0000
parents 342822c2d49a
children bcc7a6ddb2c8
rev   line source
mas01cr@498 1 #include "audioDB_API.h"
mas01cr@498 2 #include "test_utils_lib.h"
mas01ik@355 3
mas01cr@498 4 int main(int argc, char **argv) {
mas01cr@498 5 adb_t *adb;
mas01ik@355 6
mas01cr@498 7 clean_remove_db(TESTDB);
mas01cr@498 8 if(!(adb = audiodb_create(TESTDB, 0, 0, 0)))
mas01cr@498 9 return 1;
mas01ik@355 10
mas01cr@498 11 adb_datum_t datum = {2, 2, "testfeature", (double[4]) {0, 0.5, 0.5, 0},
mas01cr@498 12 NULL, (double[4]) {0, 1, 1, 2}};
mas01cr@498 13 if(audiodb_insert_datum(adb, &datum))
mas01cr@498 14 return 1;
mas01cr@498 15 if(audiodb_l2norm(adb))
mas01cr@498 16 return 1;
mas01ik@355 17
mas01cr@498 18 adb_datum_t query = {1, 2, "testquery", (double[2]) {0, 0.5}};
mas01cr@498 19 adb_query_id_t qid = {0};
mas01cr@498 20 qid.datum = &query;
mas01cr@498 21 qid.sequence_length = 1;
mas01cr@498 22 qid.sequence_start = 0;
mas01cr@498 23 adb_query_parameters_t parms =
mas01cr@498 24 {ADB_ACCUMULATION_PER_TRACK, ADB_DISTANCE_EUCLIDEAN_NORMED, 10, 10};
mas01cr@498 25 adb_query_refine_t refine = {0};
mas01cr@498 26 refine.hopsize = 1;
mas01ik@355 27
mas01cr@498 28 adb_query_spec_t spec;
mas01cr@498 29 spec.qid = qid;
mas01cr@498 30 spec.params = parms;
mas01cr@498 31 spec.refine = refine;
mas01ik@355 32
mas01cr@498 33 adb_query_results_t *results = audiodb_query_spec(adb, &spec);
mas01cr@498 34 if(!results || results->nresults != 2) return 1;
mas01cr@498 35 result_present_or_fail(results, "testfeature", 0, 0, 0);
mas01cr@498 36 result_present_or_fail(results, "testfeature", 2, 0, 1);
mas01cr@498 37 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 38
mas01cr@498 39 spec.params.npoints = 1;
mas01cr@498 40 results = audiodb_query_spec(adb, &spec);
mas01cr@498 41 if(!results || results->nresults != 1) return 1;
mas01cr@498 42 result_present_or_fail(results, "testfeature", 0, 0, 0);
mas01cr@498 43 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 44
mas01cr@498 45 spec.qid.datum->data = (double[2]) {0.5, 0};
mas01cr@498 46 spec.params.npoints = 10;
mas01cr@498 47 results = audiodb_query_spec(adb, &spec);
mas01cr@498 48 if(!results || results->nresults != 2) return 1;
mas01cr@498 49 result_present_or_fail(results, "testfeature", 0, 0, 1);
mas01cr@498 50 result_present_or_fail(results, "testfeature", 2, 0, 0);
mas01cr@498 51 audiodb_query_free_results(adb, &spec, results);
mas01cr@498 52
mas01cr@498 53 spec.params.npoints = 1;
mas01cr@498 54 results = audiodb_query_spec(adb, &spec);
mas01cr@498 55 if(!results || results->nresults != 1) return 1;
mas01cr@498 56 result_present_or_fail(results, "testfeature", 0, 0, 1);
mas01cr@498 57 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 58
mas01cr@498 59 audiodb_close(adb);
mas01ik@355 60
mas01cr@498 61 return 104;
mas01ik@355 62 }