diff options
author | Geir Storli <geirst@yahooinc.com> | 2022-03-29 09:15:09 +0000 |
---|---|---|
committer | Geir Storli <geirst@yahooinc.com> | 2022-03-29 09:15:09 +0000 |
commit | d06babfc8b488011604d9571aada99e261b328f6 (patch) | |
tree | 58695f6aae6b6f589d3a77ee4f7996aca8ce58f0 /searchlib/src | |
parent | 9bced6805fe2d89f9ba316399474a831c85985ff (diff) |
Add more tracing around decision-making for global filter usage.
Diffstat (limited to 'searchlib/src')
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.cpp | 21 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.h | 3 |
2 files changed, 22 insertions, 2 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.cpp index 7002b4dda71..2170bc4ad2a 100644 --- a/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.cpp @@ -69,7 +69,9 @@ NearestNeighborBlueprint::NearestNeighborBlueprint(const queryeval::FieldSpec& f _fallback_dist_fun(), _distance_heap(target_num_hits), _found_hits(), - _global_filter(GlobalFilter::create()) + _global_filter(GlobalFilter::create()), + _global_filter_hits(), + _global_filter_hit_ratio() { CellType attr_ct = _attr_tensor.getTensorType().cell_type(); _fallback_dist_fun = search::tensor::make_distance_function(_attr_tensor.distance_metric(), attr_ct); @@ -118,6 +120,8 @@ NearestNeighborBlueprint::set_global_filter(const GlobalFilter &global_filter) } else { est_hits = std::min(est_hits, max_hits); } + _global_filter_hits = max_hits; + _global_filter_hit_ratio = max_hit_ratio; } if (_approximate) { est_hits = std::min(est_hits, _target_num_hits); @@ -164,8 +168,21 @@ NearestNeighborBlueprint::visitMembers(vespalib::ObjectVisitor& visitor) const visitor.visitString("attribute_tensor", _attr_tensor.getTensorType().to_spec()); visitor.visitString("query_tensor", _query_tensor->type().to_spec()); visitor.visitInt("target_num_hits", _target_num_hits); - visitor.visitBool("approximate", _approximate); visitor.visitInt("explore_additional_hits", _explore_additional_hits); + visitor.visitBool("approximate", _approximate); + visitor.visitBool("has_index", _attr_tensor.nearest_neighbor_index()); + visitor.visitInt("top_k_found_hits", _found_hits.size()); + + visitor.openStruct("global_filter", "GlobalFilter"); + visitor.visitBool("exists", (_global_filter && _global_filter->has_filter())); + visitor.visitFloat("brute_force_limit", _brute_force_limit); + if (_global_filter_hits.has_value()) { + visitor.visitInt("hits", _global_filter_hits.value()); + } + if (_global_filter_hit_ratio.has_value()) { + visitor.visitFloat("hit_ratio", _global_filter_hit_ratio.value()); + } + visitor.closeStruct(); } bool diff --git a/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.h index 159440f4fd5..e318c53a25a 100644 --- a/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.h @@ -5,6 +5,7 @@ #include "nearest_neighbor_distance_heap.h" #include <vespa/searchlib/tensor/distance_function.h> #include <vespa/searchlib/tensor/nearest_neighbor_index.h> +#include <optional> namespace search::tensor { class ITensorAttribute; } namespace vespalib::eval { struct Value; } @@ -31,6 +32,8 @@ private: mutable NearestNeighborDistanceHeap _distance_heap; std::vector<search::tensor::NearestNeighborIndex::Neighbor> _found_hits; std::shared_ptr<const GlobalFilter> _global_filter; + std::optional<uint32_t> _global_filter_hits; + std::optional<double> _global_filter_hit_ratio; void perform_top_k(); public: |