Last active
June 2, 2020 21:05
-
-
Save emjotde/22eee6e4d5c8a2d15eba67cbbe6df1de to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
auto objFromIds = [](similarity::IdType id, const std::vector<similarity::IdType>& input) { | |
return new similarity::Object(id, -1, input.size() * sizeof(similarity::IdType), &input[0]); | |
}; | |
similarity::initLibrary(0, LogChoice::LIB_LOGSTDERR, 0); | |
std::unique_ptr<similarity::Space<float>> space(new similarity::SpaceSparseJaccard<float>()); | |
similarity::ObjectVector data; // doesn't free anything, just a vector of Object* | |
data.push_back(objFromIds(0, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9})); // delete me | |
data.push_back(objFromIds(1, {2, 3, 4, 5, 6, 7})); // delete me | |
auto factory = similarity::MethodFactoryRegistry<float>::Instance(); | |
std::unique_ptr<similarity::Index<float>> nmsIndex(factory.CreateMethod(true, "brute_force", "jaccard_sparse", *space, data)); | |
similarity::AnyParams params; // empty params | |
nmsIndex->CreateIndex(params); | |
UPtr<similarity::Object> q(objFromIds(-1, {0, 2, 3, 6, 7, 10})); // managed memory | |
similarity::KNNQuery<float> knn(*space, q.get(), 2); | |
nmsIndex->Search(&knn, -1); | |
UPtr<similarity::KNNQueue<float>> queue(knn.Result()->Clone()); | |
while(queue->Size() > 0) { | |
auto dist = queue->TopDistance(); | |
auto did = queue->TopObject()->id(); | |
std::cerr << dist << " " << did << std::endl; | |
queue->Pop(); | |
} | |
// can this somehow be done with managed memory? | |
for(auto obj : data) | |
delete obj; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment