diff options
author | Henning Baldersheim <balder@oath.com> | 2018-05-29 13:28:21 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@oath.com> | 2018-05-29 13:28:21 +0200 |
commit | b8f949e476f53a9e11a4e4b63401209bdb8b2f51 (patch) | |
tree | 971340f2db6fcbc4e20d3ca6ff3ab1d3070700d0 | |
parent | 857b1380d3d39d3667bf7ee87daa119455bccda2 (diff) |
Remove termlikeness and expect fully qualified names for children from the qrs.
22 files changed, 79 insertions, 61 deletions
diff --git a/searchcore/src/tests/proton/matching/query_test.cpp b/searchcore/src/tests/proton/matching/query_test.cpp index c002beb11d9..9434e8c61b4 100644 --- a/searchcore/src/tests/proton/matching/query_test.cpp +++ b/searchcore/src/tests/proton/matching/query_test.cpp @@ -235,7 +235,6 @@ public: void visit(ProtonSubstringTerm &n) override { checkNode(n, 0, true); } void visit(ProtonSuffixTerm &n) override { checkNode(n, 2, false); } void visit(ProtonPhrase &n) override { checkNode(n, 0, true); } - void visit(ProtonSameElement &n) override { checkNode(n, 0, true); } void visit(ProtonWeightedSetTerm &) override {} void visit(ProtonDotProduct &) override {} void visit(ProtonWandTerm &) override {} @@ -383,7 +382,6 @@ public: void visit(ProtonSubstringTerm &) override {} void visit(ProtonSuffixTerm &) override {} - void visit(ProtonSameElement &) override {} void visit(ProtonPhrase &n) override { const ITermData &term_data = n; EXPECT_EQUAL(2u, term_data.getPhraseLength()); diff --git a/searchcore/src/tests/proton/matching/querynodes_test.cpp b/searchcore/src/tests/proton/matching/querynodes_test.cpp index a12aa797947..7b6fdd1ae88 100644 --- a/searchcore/src/tests/proton/matching/querynodes_test.cpp +++ b/searchcore/src/tests/proton/matching/querynodes_test.cpp @@ -208,7 +208,7 @@ public: typedef QueryBuilder<ProtonNodeTypes> QB; struct Phrase { void addToBuilder(QB& b) { b.addPhrase(2, view, id, weight); }}; -struct SameElement { void addToBuilder(QB& b) { b.addSameElement(2, view, id, weight); }}; +struct SameElement { void addToBuilder(QB& b) { b.addSameElement(2, view); }}; struct Near { void addToBuilder(QB& b) { b.addNear(2, distance); } }; struct ONear { void addToBuilder(QB& b) { b.addONear(2, distance); } }; struct Or { void addToBuilder(QB& b) { b.addOr(2); } }; diff --git a/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp b/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp index 09d2f28b1f0..165fc67179a 100644 --- a/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp +++ b/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp @@ -123,21 +123,22 @@ private: } protected: - void visit(ProtonAnd &n) override { buildIntermediate(new AndBlueprint(), n); } - void visit(ProtonAndNot &n) override { buildIntermediate(new AndNotBlueprint(), n); } - void visit(ProtonOr &n) override { buildIntermediate(new OrBlueprint(), n); } - void visit(ProtonWeakAnd &n) override { buildWeakAnd(n); } - void visit(ProtonEquiv &n) override { buildEquiv(n); } - void visit(ProtonRank &n) override { buildIntermediate(new RankBlueprint(), n); } - void visit(ProtonNear &n) override { buildIntermediate(new NearBlueprint(n.getDistance()), n); } - void visit(ProtonONear &n) override { buildIntermediate(new ONearBlueprint(n.getDistance()), n); } + void visit(ProtonAnd &n) override { buildIntermediate(new AndBlueprint(), n); } + void visit(ProtonAndNot &n) override { buildIntermediate(new AndNotBlueprint(), n); } + void visit(ProtonOr &n) override { buildIntermediate(new OrBlueprint(), n); } + void visit(ProtonWeakAnd &n) override { buildWeakAnd(n); } + void visit(ProtonEquiv &n) override { buildEquiv(n); } + void visit(ProtonRank &n) override { buildIntermediate(new RankBlueprint(), n); } + void visit(ProtonNear &n) override { buildIntermediate(new NearBlueprint(n.getDistance()), n); } + void visit(ProtonONear &n) override { buildIntermediate(new ONearBlueprint(n.getDistance()), n); } + void visit(ProtonSameElement &n) override { buildIntermediate(nullptr /*new SameElementBlueprint())*/, n); } + void visit(ProtonWeightedSetTerm &n) override { buildTerm(n); } void visit(ProtonDotProduct &n) override { buildTerm(n); } void visit(ProtonWandTerm &n) override { buildTerm(n); } void visit(ProtonPhrase &n) override { buildTerm(n); } - void visit(ProtonSameElement &n) override { buildTerm(n); } void visit(ProtonNumberTerm &n) override { buildTerm(n); } void visit(ProtonLocationTerm &n) override { buildTerm(n); } void visit(ProtonPrefixTerm &n) override { buildTerm(n); } diff --git a/searchcore/src/vespa/searchcore/proton/matching/query.cpp b/searchcore/src/vespa/searchcore/proton/matching/query.cpp index 9181205bb19..8896e4d35c8 100644 --- a/searchcore/src/vespa/searchcore/proton/matching/query.cpp +++ b/searchcore/src/vespa/searchcore/proton/matching/query.cpp @@ -78,8 +78,8 @@ void AddLocationNode(const string &location_str, Node::UP &query_tree, Location } } // namespace -Query::Query() {} -Query::~Query() {} +Query::Query() = default; +Query::~Query() = default; bool Query::buildTree(const vespalib::stringref &stack, const string &location, diff --git a/searchcore/src/vespa/searchcore/proton/matching/querynodes.h b/searchcore/src/vespa/searchcore/proton/matching/querynodes.h index 0bec68bd27d..986c5d2dde9 100644 --- a/searchcore/src/vespa/searchcore/proton/matching/querynodes.h +++ b/searchcore/src/vespa/searchcore/proton/matching/querynodes.h @@ -104,13 +104,15 @@ struct ProtonTerm : public ProtonTermBase<Base> { ~ProtonTerm() {} }; -typedef search::query::SimpleAnd ProtonAnd; -typedef search::query::SimpleAndNot ProtonAndNot; -typedef search::query::SimpleNear ProtonNear; -typedef search::query::SimpleONear ProtonONear; -typedef search::query::SimpleOr ProtonOr; -typedef search::query::SimpleRank ProtonRank; -typedef search::query::SimpleWeakAnd ProtonWeakAnd; +typedef search::query::SimpleAnd ProtonAnd; +typedef search::query::SimpleAndNot ProtonAndNot; +typedef search::query::SimpleNear ProtonNear; +typedef search::query::SimpleONear ProtonONear; +typedef search::query::SimpleOr ProtonOr; +typedef search::query::SimpleRank ProtonRank; +typedef search::query::SimpleWeakAnd ProtonWeakAnd; +typedef search::query::SimpleSameElement ProtonSameElement; + struct ProtonEquiv final : public ProtonTermBase<search::query::Equiv> { @@ -121,7 +123,6 @@ struct ProtonEquiv final : public ProtonTermBase<search::query::Equiv> typedef ProtonTerm<search::query::LocationTerm> ProtonLocationTerm; typedef ProtonTerm<search::query::NumberTerm> ProtonNumberTerm; typedef ProtonTerm<search::query::Phrase> ProtonPhrase; -typedef ProtonTerm<search::query::SameElement> ProtonSameElement; typedef ProtonTerm<search::query::PrefixTerm> ProtonPrefixTerm; typedef ProtonTerm<search::query::RangeTerm> ProtonRangeTerm; diff --git a/searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.cpp b/searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.cpp index 8980ad6a220..3fd4000bf9f 100644 --- a/searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.cpp +++ b/searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.cpp @@ -25,12 +25,12 @@ struct TermDataFromTermVisitor void visit(ProtonOr &) override {} void visit(ProtonRank &) override {} void visit(ProtonWeakAnd &) override {} + void visit(ProtonSameElement &) override { } void visit(ProtonWeightedSetTerm &n) override { visitTerm(n); } void visit(ProtonDotProduct &n) override { visitTerm(n); } void visit(ProtonWandTerm &n) override { visitTerm(n); } void visit(ProtonPhrase &n) override { visitTerm(n); } - void visit(ProtonSameElement &n) override { visitTerm(n); } void visit(ProtonEquiv &n) override { visitTerm(n); } void visit(ProtonNumberTerm &n) override { visitTerm(n); } diff --git a/searchlib/src/tests/query/customtypevisitor_test.cpp b/searchlib/src/tests/query/customtypevisitor_test.cpp index fac60cb0aaf..a941694d375 100644 --- a/searchlib/src/tests/query/customtypevisitor_test.cpp +++ b/searchlib/src/tests/query/customtypevisitor_test.cpp @@ -39,7 +39,7 @@ struct MyNear : Near { MyNear() : Near(1) {} }; struct MyONear : ONear { MyONear() : ONear(1) {} }; struct MyOr : Or {}; struct MyPhrase : Phrase { MyPhrase() : Phrase("view", 0, Weight(42)) {} }; -struct MySameElement : SameElement { MySameElement() : SameElement("view", 0, Weight(42)) {} }; +struct MySameElement : SameElement { MySameElement() : SameElement("view") {} }; struct MyRank : Rank {}; struct MyNumberTerm : InitTerm<NumberTerm> {}; struct MyLocationTerm : InitTerm<LocationTerm> {}; diff --git a/searchlib/src/tests/query/query_visitor_test.cpp b/searchlib/src/tests/query/query_visitor_test.cpp index 7135f69ec09..f8922c54a4e 100644 --- a/searchlib/src/tests/query/query_visitor_test.cpp +++ b/searchlib/src/tests/query/query_visitor_test.cpp @@ -83,7 +83,7 @@ void Test::requireThatAllNodesCanBeVisited() { checkVisit<ONear>(new SimpleONear(0)); checkVisit<Or>(new SimpleOr); checkVisit<Phrase>(new SimplePhrase("field", 0, Weight(42))); - checkVisit<SameElement>(new SimpleSameElement("field", 0, Weight(42))); + checkVisit<SameElement>(new SimpleSameElement("field")); checkVisit<WeightedSetTerm>(new SimpleWeightedSetTerm("field", 0, Weight(42))); checkVisit<DotProduct>(new SimpleDotProduct("field", 0, Weight(42))); checkVisit<WandTerm>(new SimpleWandTerm("field", 0, Weight(42), 57, 67, 77.7)); diff --git a/searchlib/src/tests/query/querybuilder_test.cpp b/searchlib/src/tests/query/querybuilder_test.cpp index 9753072cdf7..2f15ecc40c2 100644 --- a/searchlib/src/tests/query/querybuilder_test.cpp +++ b/searchlib/src/tests/query/querybuilder_test.cpp @@ -105,7 +105,7 @@ Node::UP createQueryTree() { builder.addStringTerm(str[2], view[2], id[2], weight[2]); } builder.addRegExpTerm(str[5], view[5], id[5], weight[5]); - builder.addSameElement(3, view[4], id[4], weight[4]); + builder.addSameElement(3, view[4]); { builder.addStringTerm(str[4], view[4], id[4], weight[5]); builder.addStringTerm(str[5], view[5], id[5], weight[6]); @@ -322,7 +322,7 @@ struct MyONear : ONear { MyONear(size_t dist) : ONear(dist) {} }; struct MyWeakAnd : WeakAnd { MyWeakAnd(uint32_t minHits, const vespalib::string & v) : WeakAnd(minHits, v) {} }; struct MyOr : Or {}; struct MyPhrase : Phrase { MyPhrase(const string &f, int32_t i, Weight w) : Phrase(f, i, w) {}}; -struct MySameElement : SameElement { MySameElement(const string &f, int32_t i, Weight w) : SameElement(f, i, w) {}}; +struct MySameElement : SameElement { MySameElement(const string &f) : SameElement(f) {}}; struct MyWeightedSetTerm : WeightedSetTerm { MyWeightedSetTerm(const string &f, int32_t i, Weight w) : WeightedSetTerm(f, i, w) {} @@ -545,8 +545,7 @@ TEST("require that Query Tree Creator Can Create Queries From Stack") { string stackDump = StackDumpCreator::create(*node); SimpleQueryStackDumpIterator iterator(stackDump); - Node::UP new_node = - QueryTreeCreator<SimpleQueryNodeTypes>::create(iterator); + Node::UP new_node = QueryTreeCreator<SimpleQueryNodeTypes>::create(iterator); checkQueryTreeTypes<SimpleQueryNodeTypes>(new_node.get()); } diff --git a/searchlib/src/vespa/searchlib/parsequery/parse.cpp b/searchlib/src/vespa/searchlib/parsequery/parse.cpp index ec8d80bd4e6..ff8c8e84d99 100644 --- a/searchlib/src/vespa/searchlib/parsequery/parse.cpp +++ b/searchlib/src/vespa/searchlib/parsequery/parse.cpp @@ -111,8 +111,12 @@ ParseItem::AppendBuffer(RawBuf *buf) const case ITEM_WEAK_AND: case ITEM_NEAR: case ITEM_ONEAR: + case ITEM_SAME_ELEMENT: buf->appendCompressedPositiveNumber(_arity); - buf->appendCompressedPositiveNumber(_arg1); + if (Type() != ITEM_SAME_ELEMENT) { + buf->appendCompressedPositiveNumber(_arg1); + } + if (Type() == ITEM_WEAK_AND) { buf->appendCompressedPositiveNumber(indexLen); if (indexLen != 0) { @@ -124,7 +128,6 @@ ParseItem::AppendBuffer(RawBuf *buf) const case ITEM_DOT_PRODUCT: case ITEM_WAND: case ITEM_PHRASE: - case ITEM_SAME_ELEMENT: buf->appendCompressedPositiveNumber(_arity); buf->appendCompressedPositiveNumber(indexLen); if (indexLen != 0) { @@ -198,6 +201,8 @@ ParseItem::GetBufferLen() const case ITEM_WEIGHTED_SET: case ITEM_DOT_PRODUCT: case ITEM_PHRASE: + len += sizeof(uint32_t) * 2 + indexLen; + break; case ITEM_SAME_ELEMENT: len += sizeof(uint32_t) * 2 + indexLen; break; diff --git a/searchlib/src/vespa/searchlib/parsequery/simplequerystack.cpp b/searchlib/src/vespa/searchlib/parsequery/simplequerystack.cpp index cf8f176a1a0..e16d714ffcc 100644 --- a/searchlib/src/vespa/searchlib/parsequery/simplequerystack.cpp +++ b/searchlib/src/vespa/searchlib/parsequery/simplequerystack.cpp @@ -204,13 +204,17 @@ SimpleQueryStack::StackbufToString(const vespalib::stringref &theBuf) result.append(make_string("%c/%d~", _G_ItemName[type], arity)); break; case ParseItem::ITEM_WEAK_AND: + case ParseItem::ITEM_SAME_ELEMENT: case ParseItem::ITEM_NEAR: case ParseItem::ITEM_ONEAR: p += vespalib::compress::Integer::decompressPositive(tmp, p); arity = tmp; - p += vespalib::compress::Integer::decompressPositive(tmp, p); - arg1 = tmp; - if (type == ParseItem::ITEM_WEAK_AND) { + if (type != ParseItem::ITEM_SAME_ELEMENT) { + p += vespalib::compress::Integer::decompressPositive(tmp, p); + arg1 = tmp; + } + + if (type == ParseItem::ITEM_WEAK_AND || type == ParseItem::ITEM_SAME_ELEMENT) { p += vespalib::compress::Integer::decompressPositive(tmp, p); idxRefLen = tmp; idxRef = p; @@ -256,7 +260,6 @@ SimpleQueryStack::StackbufToString(const vespalib::stringref &theBuf) break; case ParseItem::ITEM_PHRASE: - case ParseItem::ITEM_SAME_ELEMENT: case ParseItem::ITEM_WEIGHTED_SET: case ParseItem::ITEM_DOT_PRODUCT: case ParseItem::ITEM_WAND: diff --git a/searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.cpp b/searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.cpp index 829b043fa02..542e7990c1e 100644 --- a/searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.cpp +++ b/searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.cpp @@ -34,9 +34,7 @@ SimpleQueryStackDumpIterator::SimpleQueryStackDumpIterator(const vespalib::strin { } -SimpleQueryStackDumpIterator::~SimpleQueryStackDumpIterator() -{ -} +SimpleQueryStackDumpIterator::~SimpleQueryStackDumpIterator() = default; vespalib::string SimpleQueryStackDumpIterator::readString(const char *&p) { if (p >= _bufEnd) throw false; @@ -154,6 +152,20 @@ SimpleQueryStackDumpIterator::next() _currTerm = NULL; _currTermLen = 0; break; + case ParseItem::ITEM_SAME_ELEMENT: + if (p >= _bufEnd) return false; + p += vespalib::compress::Integer::decompressPositive(tmp, p); + _currArity = tmp; + _currArg1 = 0; + p += vespalib::compress::Integer::decompressPositive(tmp, p); + _currIndexNameLen = tmp; + if (p > _bufEnd) return false; + _currIndexName = p; + p += _currIndexNameLen; + if (p > _bufEnd) return false; + _currTerm = NULL; + _currTermLen = 0; + break; case ParseItem::ITEM_PURE_WEIGHTED_STRING: if (p >= _bufEnd) return false; @@ -250,7 +262,6 @@ SimpleQueryStackDumpIterator::next() case ParseItem::ITEM_DOT_PRODUCT: case ParseItem::ITEM_WAND: case ParseItem::ITEM_PHRASE: - case ParseItem::ITEM_SAME_ELEMENT: p += vespalib::compress::Integer::decompressPositive(tmp, p); _currArity = tmp; if (p > _bufEnd) return false; diff --git a/searchlib/src/vespa/searchlib/query/tree/customtypetermvisitor.h b/searchlib/src/vespa/searchlib/query/tree/customtypetermvisitor.h index 5b69001573e..611406e6ea3 100644 --- a/searchlib/src/vespa/searchlib/query/tree/customtypetermvisitor.h +++ b/searchlib/src/vespa/searchlib/query/tree/customtypetermvisitor.h @@ -26,6 +26,7 @@ private: void visit(typename NodeTypes::Or &n) override { visitChildren(n); } void visit(typename NodeTypes::Rank &n) override { visitChildren(n); } void visit(typename NodeTypes::WeakAnd &n) override { visitChildren(n); } + void visit(typename NodeTypes::SameElement &n) override { visitChildren(n); } // phrases and weighted set terms are conceptual leaf nodes and // should be handled that way. diff --git a/searchlib/src/vespa/searchlib/query/tree/intermediatenodes.h b/searchlib/src/vespa/searchlib/query/tree/intermediatenodes.h index 93b4000b6c3..6d643d951f0 100644 --- a/searchlib/src/vespa/searchlib/query/tree/intermediatenodes.h +++ b/searchlib/src/vespa/searchlib/query/tree/intermediatenodes.h @@ -103,11 +103,13 @@ public: virtual ~Phrase() = 0; }; -class SameElement : public QueryNodeMixin<SameElement, Intermediate>, public Term { +class SameElement : public QueryNodeMixin<SameElement, Intermediate> { public: - SameElement(const vespalib::string &view, int32_t id, Weight weight) - : Term(view, id, weight) {} + SameElement(const vespalib::string &view) : _view(view) {} virtual ~SameElement() = 0; + const vespalib::string & getView() const { return _view; } +private: + vespalib::string _view; }; class WeightedSetTerm : public QueryNodeMixin<WeightedSetTerm, Intermediate>, public Term { diff --git a/searchlib/src/vespa/searchlib/query/tree/querybuilder.h b/searchlib/src/vespa/searchlib/query/tree/querybuilder.h index b6a755ddb97..3c6ff93457d 100644 --- a/searchlib/src/vespa/searchlib/query/tree/querybuilder.h +++ b/searchlib/src/vespa/searchlib/query/tree/querybuilder.h @@ -122,8 +122,8 @@ typename NodeTypes::Phrase *createPhrase(const vespalib::stringref &view, int32_ return new typename NodeTypes::Phrase(view, id, weight); } template <class NodeTypes> -typename NodeTypes::SameElement *createSameElement(const vespalib::stringref &view, int32_t id, Weight weight) { - return new typename NodeTypes::SameElement(view, id, weight); +typename NodeTypes::SameElement *createSameElement(const vespalib::stringref &view) { + return new typename NodeTypes::SameElement(view); } template <class NodeTypes> typename NodeTypes::WeightedSetTerm *createWeightedSetTerm(const vespalib::stringref &view, int32_t id, Weight weight) { @@ -245,11 +245,8 @@ public: setWeightOverride(weight); return node; } - typename NodeTypes::SameElement &addSameElement(int child_count, const stringref &view, int32_t id, Weight weight) { - adjustWeight(weight); - typename NodeTypes::SameElement &node = addIntermediate(createSameElement<NodeTypes>(view, id, weight), child_count); - setWeightOverride(weight); - return node; + typename NodeTypes::SameElement &addSameElement(int child_count, const stringref &view) { + return addIntermediate(createSameElement<NodeTypes>(view), child_count); } typename NodeTypes::WeightedSetTerm &addWeightedSetTerm( int child_count, const stringref &view, int32_t id, Weight weight) { adjustWeight(weight); diff --git a/searchlib/src/vespa/searchlib/query/tree/queryreplicator.h b/searchlib/src/vespa/searchlib/query/tree/queryreplicator.h index a8d6596dc37..7bf6c17f136 100644 --- a/searchlib/src/vespa/searchlib/query/tree/queryreplicator.h +++ b/searchlib/src/vespa/searchlib/query/tree/queryreplicator.h @@ -75,8 +75,7 @@ private: } void visit(SameElement &node) override { - replicate(node, _builder.addSameElement(node.getChildren().size(), node.getView(), - node.getId(), node.getWeight())); + _builder.addSameElement(node.getChildren().size(), node.getView()); visitNodes(node.getChildren()); } diff --git a/searchlib/src/vespa/searchlib/query/tree/simplequery.h b/searchlib/src/vespa/searchlib/query/tree/simplequery.h index 18d97a26046..557d0964bcb 100644 --- a/searchlib/src/vespa/searchlib/query/tree/simplequery.h +++ b/searchlib/src/vespa/searchlib/query/tree/simplequery.h @@ -32,8 +32,7 @@ struct SimplePhrase : Phrase { }; struct SimpleSameElement : SameElement { - SimpleSameElement(const vespalib::stringref &view, int32_t id, Weight weight) - : SameElement(view, id, weight) {} + SimpleSameElement(const vespalib::stringref &view) : SameElement(view) {} }; struct SimpleWeightedSetTerm : WeightedSetTerm { SimpleWeightedSetTerm(const vespalib::stringref &view, int32_t id, Weight weight) diff --git a/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp b/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp index b75f4553f72..645750b8576 100644 --- a/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp +++ b/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp @@ -98,6 +98,13 @@ class QueryNodeConverter : public QueryVisitor { visitNodes(node.getChildren()); } + void createIntermediate(const Intermediate &node, size_t type, const vespalib::string & view) { + appendByte(type); + appendCompressedPositiveNumber(node.getChildren().size()); + appendString(view); + visitNodes(node.getChildren()); + } + void createIntermediate(const Intermediate &node, size_t type, size_t distance, const vespalib::string & view) { appendByte(type); appendCompressedPositiveNumber(node.getChildren().size()); @@ -135,7 +142,7 @@ class QueryNodeConverter : public QueryVisitor { } void visit(SameElement &node) override { - createComplexIntermediate(node, node.getChildren(), (ParseItem::ITEM_SAME_ELEMENT | ParseItem::IF_WEIGHT)); + createIntermediate(node, ParseItem::ITEM_SAME_ELEMENT, node.getView()); } void visit(Phrase &node) override { diff --git a/searchlib/src/vespa/searchlib/query/tree/stackdumpquerycreator.h b/searchlib/src/vespa/searchlib/query/tree/stackdumpquerycreator.h index c1618da5200..fa42cdac1c0 100644 --- a/searchlib/src/vespa/searchlib/query/tree/stackdumpquerycreator.h +++ b/searchlib/src/vespa/searchlib/query/tree/stackdumpquerycreator.h @@ -91,9 +91,7 @@ private: pureTermView = view; } else if (type == ParseItem::ITEM_SAME_ELEMENT) { vespalib::stringref view = queryStack.getIndexName(); - int32_t id = queryStack.getUniqueId(); - Weight weight = queryStack.GetWeight(); - t = &builder.addSameElement(arity, view, id, weight); + builder.addSameElement(arity, view); pureTermView = view; } else if (type == ParseItem::ITEM_WEIGHTED_SET) { vespalib::stringref view = queryStack.getIndexName(); diff --git a/searchlib/src/vespa/searchlib/query/tree/templatetermvisitor.h b/searchlib/src/vespa/searchlib/query/tree/templatetermvisitor.h index 3a9c56166e9..0cdaca82572 100644 --- a/searchlib/src/vespa/searchlib/query/tree/templatetermvisitor.h +++ b/searchlib/src/vespa/searchlib/query/tree/templatetermvisitor.h @@ -37,8 +37,6 @@ class TemplateTermVisitor : public CustomTypeTermVisitor<NodeTypes> { // overridden to do so. void visit(typename NodeTypes::Phrase &n) override { myVisit(n); } - void visit(typename NodeTypes::SameElement &n) override { myVisit(n); } - // WeightedSetTerms are terms with children. This visitor will not visit // the weighted set's children, unless this member function is // overridden to do so. diff --git a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp index bbae3f19c1d..c7eb63a4480 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp @@ -246,7 +246,6 @@ JuniperQueryAdapter::Traverse(juniper::IQueryVisitor *v) const } break; case search::ParseItem::ITEM_PHRASE: - case search::ParseItem::ITEM_SAME_ELEMENT: if (!v->VisitPHRASE(&item, iterator.getArity())) rc = SkipItem(&iterator); break; @@ -281,6 +280,7 @@ JuniperQueryAdapter::Traverse(juniper::IQueryVisitor *v) const case search::ParseItem::ITEM_SUFFIXTERM: case search::ParseItem::ITEM_REGEXP: case search::ParseItem::ITEM_PREDICATE_QUERY: + case search::ParseItem::ITEM_SAME_ELEMENT: if (!v->VisitOther(&item, iterator.getArity())) { rc = SkipItem(&iterator); } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp index 50274d08fb5..3a60db52cf3 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp @@ -165,7 +165,6 @@ KeywordExtractor::ExtractKeywords(vespalib::stringref buf) const break; case search::ParseItem::ITEM_PHRASE: - case search::ParseItem::ITEM_SAME_ELEMENT: { // Must take the next arity TERMS and put together bool phraseterms_was_added = false; |