#pragma once #include #include "psu-ds/BTree.h" #include "framework/interface/Record.h" #include "pgm/pgm_index_dynamic.hpp" /* BTree definitions*/ template struct btree_record { K key; V value; inline bool operator<(const btree_record& other) const { return key < other.key || (key == other.key && value < other.value); } inline bool operator==(const btree_record& other) const { return key == other.key && value == other.value; } }; template struct btree_key_extract { static const K &get(const btree_record &v) { return v.key; } }; typedef psudb::BTree, btree_key_extract> BenchBTree; /*MTree Definitions*/ const size_t W2V_SIZE = 300; typedef de::EuclidPoint Word2VecRec; const size_t ANNSize = 128; typedef de::EuclidPoint ANNRec; struct euclidean_distance { double operator()(const Word2VecRec &first, const Word2VecRec &second) const { double dist = 0; for (size_t i=0; i MTree; typedef mt::mtree MTree_alt; #endif typedef pgm::DynamicPGMIndex> PGM;