diff options
author | Henning Baldersheim <balder@oath.com> | 2018-07-23 11:18:54 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@oath.com> | 2018-07-23 11:18:54 +0200 |
commit | 48229248e29b32d6b2108ada576ba8e362e9916c (patch) | |
tree | f2abfe9d2a098067b3d61a368c4fd3f9c1986802 /searchlib | |
parent | 4d887689f9afc4fc74873b6362211d1db252e0b9 (diff) |
Add some more details to assist debugging.
Diffstat (limited to 'searchlib')
3 files changed, 30 insertions, 13 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp index 2ad1cc0d739..8bbe1fd4337 100644 --- a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp @@ -7,6 +7,8 @@ #include <vespa/searchlib/common/bitvector.h> #include <vespa/vespalib/stllike/hash_map.h> #include <vespa/searchlib/fef/matchdatalayout.h> +#include <vespa/vespalib/objects/visit.h> +#include <vespa/vespalib/util/stringfmt.h> namespace search { @@ -166,11 +168,11 @@ AttributeWeightedSetBlueprint::createLeafSearch(const fef::TermFieldMatchDataArr assert(isSingleValue); (void) isSingleValue; if (isString) { - return queryeval::SearchIterator::UP(new AttributeFilter<UseStringEnum>(tfmd, _attr, _weights, _contexts)); + return std::make_unique<AttributeFilter<UseStringEnum>>(tfmd, _attr, _weights, _contexts); } else { assert(isInteger); (void) isInteger; - return queryeval::SearchIterator::UP(new AttributeFilter<UseInteger>(tfmd, _attr, _weights, _contexts)); + return std::make_unique<AttributeFilter<UseInteger>>(tfmd, _attr, _weights, _contexts); } } } @@ -179,10 +181,26 @@ void AttributeWeightedSetBlueprint::fetchPostings(bool strict) { if (strict) { - for (size_t i = 0; i < _contexts.size(); ++i) { - _contexts[i]->fetchPostings(true); + for (auto * context : _contexts) { + context->fetchPostings(true); } } } +void +AttributeWeightedSetBlueprint::visitMembers(vespalib::ObjectVisitor &visitor) const +{ + ComplexLeafBlueprint::visitMembers(visitor); + visitor.visitString("attribute", _attr.getName()); + visitor.openStruct("terms", "TermList"); + for (size_t i = 0; i < _contexts.size(); ++i) { + const ISearchContext * context = _contexts[i]; + visitor.openStruct(vespalib::make_string("[%zu]", i), "Term"); + visitor.visitString("term", context->queryTerm().getTerm()); + visitor.visitInt("weight", _weights[i]); + visitor.closeStruct(); + } + visitor.closeStruct(); +} + } // namespace search diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h index 3b4bbd2d916..d66a544e77a 100644 --- a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h +++ b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h @@ -16,21 +16,21 @@ class AttributeWeightedSetBlueprint : public queryeval::ComplexLeafBlueprint private: using ISearchContext = attribute::ISearchContext; using IAttributeVector = attribute::IAttributeVector; - size_t _numDocs; - size_t _estHits; - std::vector<int32_t> _weights; - const IAttributeVector & _attr; - std::vector<ISearchContext*> _contexts; - - AttributeWeightedSetBlueprint(const AttributeWeightedSetBlueprint &); // disabled - AttributeWeightedSetBlueprint &operator=(const AttributeWeightedSetBlueprint &); // disabled + size_t _numDocs; + size_t _estHits; + std::vector<int32_t> _weights; + const IAttributeVector & _attr; + std::vector<ISearchContext*> _contexts; public: + AttributeWeightedSetBlueprint(const AttributeWeightedSetBlueprint &) = delete; + AttributeWeightedSetBlueprint &operator=(const AttributeWeightedSetBlueprint &) = delete; AttributeWeightedSetBlueprint(const queryeval::FieldSpec &field, const IAttributeVector & attr); ~AttributeWeightedSetBlueprint(); void addToken(std::unique_ptr<ISearchContext> context, int32_t weight); queryeval::SearchIterator::UP createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, bool strict) const override; void fetchPostings(bool strict) override; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; }; } // namespace search diff --git a/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp index 1ad4d60bc7f..c99e07cd355 100644 --- a/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp @@ -133,7 +133,6 @@ Blueprint::visitMembers(vespalib::ObjectVisitor &visitor) const for (size_t i = 0; i < state.numFields(); ++i) { const FieldSpecBase &spec = state.field(i); visitor.openStruct(vespalib::make_string("[%zu]", i), "Field"); - // visitor.visitString("name", spec.getName()); visitor.visitInt("fieldId", spec.getFieldId()); visitor.visitInt("handle", spec.getHandle()); visitor.visitBool("isFilter", spec.isFilter()); |