Commit 2aa5f7ff authored by Sergei Golubchik's avatar Sergei Golubchik

mhnsw: search intermediate layers with ef=1

also add missing candidates.empty();
parent 2dc1e635
...@@ -579,12 +579,9 @@ int mhnsw_insert(TABLE *table, KEY *keyinfo) ...@@ -579,12 +579,9 @@ int mhnsw_insert(TABLE *table, KEY *keyinfo)
{ {
for (longlong cur_layer= max_layer; cur_layer > new_node_layer; cur_layer--) for (longlong cur_layer= max_layer; cur_layer > new_node_layer; cur_layer--)
{ {
if (int err= search_layer(&ctx, start_nodes, if (int err= search_layer(&ctx, start_nodes, 1, cur_layer, &candidates))
thd->variables.hnsw_ef_constructor, cur_layer,
&candidates))
return err; return err;
start_nodes.empty(); start_nodes= candidates;
start_nodes.push_back(candidates.head(), &ctx.root); // XXX ef=1
candidates.empty(); candidates.empty();
} }
} }
...@@ -606,6 +603,7 @@ int mhnsw_insert(TABLE *table, KEY *keyinfo) ...@@ -606,6 +603,7 @@ int mhnsw_insert(TABLE *table, KEY *keyinfo)
if (int err= update_neighbors(&ctx, cur_layer, max_neighbors, target)) if (int err= update_neighbors(&ctx, cur_layer, max_neighbors, target))
return err; return err;
start_nodes= candidates; start_nodes= candidates;
candidates.empty();
} }
dbug_tmp_restore_column_map(&table->read_set, old_map); dbug_tmp_restore_column_map(&table->read_set, old_map);
...@@ -667,12 +665,9 @@ int mhnsw_first(TABLE *table, KEY *keyinfo, Item *dist, ulonglong limit) ...@@ -667,12 +665,9 @@ int mhnsw_first(TABLE *table, KEY *keyinfo, Item *dist, ulonglong limit)
for (size_t cur_layer= max_layer; cur_layer > 0; cur_layer--) for (size_t cur_layer= max_layer; cur_layer > 0; cur_layer--)
{ {
//XXX in the paper ef_search=1 here if (int err= search_layer(&ctx, start_nodes, 1, cur_layer, &candidates))
if (int err= search_layer(&ctx, start_nodes, ef_search, cur_layer,
&candidates))
return err; return err;
start_nodes.empty(); start_nodes= candidates;
start_nodes.push_back(candidates.head(), &ctx.root); // XXX so ef_search=1 ???
candidates.empty(); candidates.empty();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment