summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@oath.com>2018-07-23 11:18:54 +0200
committerHenning Baldersheim <balder@oath.com>2018-07-23 11:18:54 +0200
commit48229248e29b32d6b2108ada576ba8e362e9916c (patch)
treef2abfe9d2a098067b3d61a368c4fd3f9c1986802 /searchlib
parent4d887689f9afc4fc74873b6362211d1db252e0b9 (diff)
Add some more details to assist debugging.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp26
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h16
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/blueprint.cpp1
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());