From d6e08e9d8d3ac9b356ac50cee22b41f828160247 Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Thu, 27 Jul 2023 18:21:26 -0400 Subject: Expanded query interface Query interface now enables skipping of delete processing and stopping query processing when first match is found. --- include/shard/VPTree.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'include/shard/VPTree.h') diff --git a/include/shard/VPTree.h b/include/shard/VPTree.h index 5f740dc..86f4ab7 100644 --- a/include/shard/VPTree.h +++ b/include/shard/VPTree.h @@ -424,6 +424,9 @@ private: template class KNNQuery { public: + constexpr static bool EARLY_ABORT=false; + constexpr static bool SKIP_DELETE_FILTER=true; + static void *get_query_state(VPTree *wss, void *parms) { return nullptr; } @@ -432,7 +435,7 @@ public: return nullptr; } - static void process_query_states(void *query_parms, std::vector shard_states, void *buff_state) { + static void process_query_states(void *query_parms, std::vector &shard_states, void *buff_state) { return; } @@ -494,7 +497,7 @@ public: return results; } - static std::vector merge(std::vector> &results, void *parms) { + static std::vector merge(std::vector>> &results, void *parms) { KNNQueryParms *p = (KNNQueryParms *) parms; R rec = p->point; size_t k = p->k; @@ -503,14 +506,14 @@ public: for (size_t i=0; icalc_distance(rec); - double cur_dist = results[i][j].calc_distance(rec); + double cur_dist = results[i][j].rec.calc_distance(rec); if (cur_dist < head_dist) { pq.pop(); - pq.push(&results[i][j]); + pq.push(&results[i][j].rec); } } } -- cgit v1.2.3