diff options
author | Arne Juul <arnej@verizonmedia.com> | 2020-06-09 09:55:30 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2020-06-09 09:55:30 +0000 |
commit | deb796350824755ec9cefca91c9a5b6835e6a795 (patch) | |
tree | e4a93df1f8e3672a49d4a24dbdb84adaa1b42485 | |
parent | f9f0e7a1f555b092739a1b30704bf7550348c129 (diff) |
construct HnswGraph::EntryNode directly
5 files changed, 15 insertions, 29 deletions
diff --git a/searchlib/src/tests/tensor/hnsw_saver/hnsw_save_load_test.cpp b/searchlib/src/tests/tensor/hnsw_saver/hnsw_save_load_test.cpp index b0a82abec25..bcc886fccad 100644 --- a/searchlib/src/tests/tensor/hnsw_saver/hnsw_save_load_test.cpp +++ b/searchlib/src/tests/tensor/hnsw_saver/hnsw_save_load_test.cpp @@ -49,10 +49,7 @@ void populate(HnswGraph &graph) { graph.set_link_array(6, 0, V{1, 2, 4}); graph.set_link_array(2, 1, V{4}); graph.set_link_array(4, 1, V{2}); - HnswGraph::EntryNode entry; - entry.docid = 2; - entry.level = 1; - graph.set_entry_node(entry); + graph.set_entry_node({2, 1}); } void modify(HnswGraph &graph) { @@ -66,10 +63,7 @@ void modify(HnswGraph &graph) { graph.set_link_array(4, 1, V{7}); graph.set_link_array(7, 1, V{4}); - HnswGraph::EntryNode entry; - entry.docid = 4; - entry.level = 1; - graph.set_entry_node(entry); + graph.set_entry_node({4, 1}); } diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_graph.cpp b/searchlib/src/vespa/searchlib/tensor/hnsw_graph.cpp index 30796b8f2a9..37e3ea1adbd 100644 --- a/searchlib/src/vespa/searchlib/tensor/hnsw_graph.cpp +++ b/searchlib/src/vespa/searchlib/tensor/hnsw_graph.cpp @@ -14,8 +14,6 @@ HnswGraph::HnswGraph() entry_docid_and_level() { EntryNode entry; - entry.docid = 0; // Note that docid 0 is reserved and never used - entry.level = -1; set_entry_node(entry); } diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_graph.h b/searchlib/src/vespa/searchlib/tensor/hnsw_graph.h index 9567d6e7d03..125692af627 100644 --- a/searchlib/src/vespa/searchlib/tensor/hnsw_graph.h +++ b/searchlib/src/vespa/searchlib/tensor/hnsw_graph.h @@ -66,7 +66,14 @@ struct HnswGraph { struct EntryNode { uint32_t docid; int32_t level; - EntryNode() : docid(0), level(-1) {} + EntryNode() + : docid(0), // Note that docid 0 is reserved and never used + level(-1) + {} + EntryNode(uint32_t docid_in, int32_t level_in) + : docid(docid_in), + level(level_in) + {} }; void set_entry_node(EntryNode node) { diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp b/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp index 2b15b7b0e5f..e6486fedf2e 100644 --- a/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp +++ b/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp @@ -278,9 +278,7 @@ HnswIndex::add_document(uint32_t docid) _graph.make_node_for_document(docid, level + 1); auto entry = _graph.get_entry_node(); if (entry.docid == 0) { - entry.docid = docid; - entry.level = level; - _graph.set_entry_node(entry); + _graph.set_entry_node({docid, level}); return; } @@ -305,9 +303,7 @@ HnswIndex::add_document(uint32_t docid) --search_level; } if (level > get_entry_level()) { - entry.docid = docid; - entry.level = level; - _graph.set_entry_node(entry); + _graph.set_entry_node({docid, level}); } } @@ -347,10 +343,7 @@ HnswIndex::remove_document(uint32_t docid) LinkArrayRef my_links = _graph.get_link_array(docid, level); for (uint32_t neighbor_id : my_links) { if (need_new_entrypoint) { - HnswGraph::EntryNode entry; - entry.docid = neighbor_id; - entry.level = level; - _graph.set_entry_node(entry); + _graph.set_entry_node({neighbor_id, level}); need_new_entrypoint = false; } remove_link_to(neighbor_id, docid, level); @@ -526,10 +519,7 @@ HnswIndex::set_node(uint32_t docid, const HnswNode &node) } int max_level = num_levels - 1; if (get_entry_level() < max_level) { - HnswGraph::EntryNode entry; - entry.docid = docid; - entry.level = max_level; - _graph.set_entry_node(entry); + _graph.set_entry_node({docid, max_level}); } } diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.cpp b/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.cpp index 8d8b4204063..9f49c0647c6 100644 --- a/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.cpp +++ b/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.cpp @@ -39,10 +39,7 @@ HnswIndexLoader::load(const fileutil::LoadedBuffer& buf) } if (_failed) return false; _graph.node_refs.ensure_size(num_nodes); - HnswGraph::EntryNode entry; - entry.docid = entry_docid; - entry.level = entry_level; - _graph.set_entry_node(entry); + _graph.set_entry_node({entry_docid, entry_level}); return true; } |