diff options
32 files changed, 91 insertions, 102 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp index 7b4db47f585..cb541c2836d 100644 --- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp +++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp @@ -103,7 +103,7 @@ DocsumContext::createSlimeReply() DocsumContext::DocsumContext(const DocsumRequest & request, IDocsumWriter & docsumWriter, IDocsumStore & docsumStore, std::shared_ptr<Matcher> matcher, ISearchContext & searchCtx, IAttributeContext & attrCtx, - IAttributeManager & attrMgr, SessionManager & sessionMgr) : + const IAttributeManager & attrMgr, SessionManager & sessionMgr) : _request(request), _docsumWriter(docsumWriter), _docsumStore(docsumStore), @@ -124,24 +124,24 @@ DocsumContext::getDocsums() } void -DocsumContext::FillSummaryFeatures(search::docsummary::GetDocsumsState * state, search::docsummary::IDocsumEnvironment *) +DocsumContext::FillSummaryFeatures(search::docsummary::GetDocsumsState& state) { - assert(&_docsumState == state); + assert(&_docsumState == &state); if (_matcher->canProduceSummaryFeatures()) { - state->_summaryFeatures = _matcher->getSummaryFeatures(_request, _searchCtx, _attrCtx, _sessionMgr); + state._summaryFeatures = _matcher->getSummaryFeatures(_request, _searchCtx, _attrCtx, _sessionMgr); } - state->_summaryFeaturesCached = false; + state._summaryFeaturesCached = false; } void -DocsumContext::FillRankFeatures(search::docsummary::GetDocsumsState * state, search::docsummary::IDocsumEnvironment *) +DocsumContext::FillRankFeatures(search::docsummary::GetDocsumsState& state) { - assert(&_docsumState == state); + assert(&_docsumState == &state); // check if we are allowed to run - if ( ! state->_args.dumpFeatures()) { + if ( ! state._args.dumpFeatures()) { return; } - state->_rankFeatures = _matcher->getRankFeatures(_request, _searchCtx, _attrCtx, _sessionMgr); + state._rankFeatures = _matcher->getRankFeatures(_request, _searchCtx, _attrCtx, _sessionMgr); } std::unique_ptr<MatchingElements> diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h index 958e19f9bed..5c1db91f05d 100644 --- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h +++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h @@ -27,7 +27,7 @@ private: std::shared_ptr<matching::Matcher> _matcher; matching::ISearchContext & _searchCtx; search::attribute::IAttributeContext & _attrCtx; - search::IAttributeManager & _attrMgr; + const search::IAttributeManager & _attrMgr; search::docsummary::GetDocsumsState _docsumState; matching::SessionManager & _sessionMgr; @@ -43,14 +43,14 @@ public: std::shared_ptr<matching::Matcher> matcher, matching::ISearchContext & searchCtx, search::attribute::IAttributeContext & attrCtx, - search::IAttributeManager & attrMgr, + const search::IAttributeManager & attrMgr, matching::SessionManager & sessionMgr); search::engine::DocsumReply::UP getDocsums(); // Implements GetDocsumsStateCallback - void FillSummaryFeatures(search::docsummary::GetDocsumsState * state, search::docsummary::IDocsumEnvironment * env) override; - void FillRankFeatures(search::docsummary::GetDocsumsState * state, search::docsummary::IDocsumEnvironment * env) override; + void FillSummaryFeatures(search::docsummary::GetDocsumsState& state) override; + void FillRankFeatures(search::docsummary::GetDocsumsState& state) override; std::unique_ptr<search::MatchingElements> fill_matching_elements(const search::MatchingElementsFields &fields) override; }; diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h b/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h index e3c4705104f..946c45feb4b 100644 --- a/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h +++ b/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h @@ -31,16 +31,11 @@ public: typedef std::unique_ptr<ISummarySetup> UP; typedef std::shared_ptr<ISummarySetup> SP; - virtual ~ISummarySetup() {} + ~ISummarySetup() override = default; virtual search::docsummary::IDocsumWriter &getDocsumWriter() const = 0; virtual const search::docsummary::ResultConfig &getResultConfig() = 0; virtual search::docsummary::IDocsumStore::UP createDocsumStore() = 0; - - // Inherit doc from IDocsumEnvironment - virtual search::IAttributeManager *getAttributeManager() override = 0; - virtual vespalib::string lookupIndex(const vespalib::string & s) const override = 0; - virtual juniper::Juniper *getJuniper() override = 0; }; typedef std::unique_ptr<ISummaryManager> UP; diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp index f398898ebb8..3e3a3529e46 100644 --- a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp +++ b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp @@ -104,7 +104,7 @@ SummarySetup(const vespalib::string & baseDir, const SummaryConfig & summaryCfg, _juniperConfig = std::make_unique<juniper::Juniper>(&_juniperProps, _wordFolder.get()); _docsumWriter = std::make_unique<DynamicDocsumWriter>(std::move(resultConfig), std::unique_ptr<KeywordExtractor>()); - DynamicDocsumConfig dynCfg(this, _docsumWriter.get()); + DynamicDocsumConfig dynCfg(*this, _docsumWriter.get()); dynCfg.configure(summarymapCfg); } diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h index 0fd45bb28fb..44874e69b31 100644 --- a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h +++ b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h @@ -43,7 +43,7 @@ public: search::docsummary::IDocsumStore::UP createDocsumStore() override; - search::IAttributeManager * getAttributeManager() override { return _attributeMgr.get(); } + const search::IAttributeManager * getAttributeManager() const override { return _attributeMgr.get(); } vespalib::string lookupIndex(const vespalib::string & s) const override { (void) s; return ""; } juniper::Juniper * getJuniper() override { return _juniperConfig.get(); } }; diff --git a/searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp b/searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp index 28c0aad6c40..311a0e68a58 100644 --- a/searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp +++ b/searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp @@ -160,8 +160,8 @@ public: { } ~StateCallback() override; - void FillSummaryFeatures(GetDocsumsState*, IDocsumEnvironment*) override {} - void FillRankFeatures(GetDocsumsState*, IDocsumEnvironment*) override {} + void FillSummaryFeatures(GetDocsumsState&) override {} + void FillRankFeatures(GetDocsumsState&) override {} std::unique_ptr<MatchingElements> fill_matching_elements(const MatchingElementsFields&) override { auto result = std::make_unique<MatchingElements>(); result->add_matching_elements(doc_id, _field_name, _matching_elements); diff --git a/searchsummary/src/tests/docsummary/positionsdfw_test.cpp b/searchsummary/src/tests/docsummary/positionsdfw_test.cpp index 3531efe1798..0de84096e82 100644 --- a/searchsummary/src/tests/docsummary/positionsdfw_test.cpp +++ b/searchsummary/src/tests/docsummary/positionsdfw_test.cpp @@ -51,7 +51,7 @@ struct MyEnvironment : IDocsumEnvironment { MyEnvironment() : attribute_man(0) {} - IAttributeManager *getAttributeManager() override { return attribute_man; } + const IAttributeManager *getAttributeManager() const override { return attribute_man; } string lookupIndex(const string &s) const override { return s; } juniper::Juniper *getJuniper() override { return 0; } }; @@ -106,8 +106,8 @@ public: }; struct MyGetDocsumsStateCallback : GetDocsumsStateCallback { - virtual void FillSummaryFeatures(GetDocsumsState *, IDocsumEnvironment *) override {} - virtual void FillRankFeatures(GetDocsumsState *, IDocsumEnvironment *) override {} + virtual void FillSummaryFeatures(GetDocsumsState&) override {} + virtual void FillRankFeatures(GetDocsumsState&) override {} std::unique_ptr<MatchingElements> fill_matching_elements(const MatchingElementsFields &) override { abort(); } }; diff --git a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp index 971f6101203..88c6cd974b9 100644 --- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp +++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp @@ -79,8 +79,8 @@ struct DocsumFixture : IDocsumStore, GetDocsumsStateCallback { } return std::make_unique<DocsumStoreDocument>(std::move(doc)); } - void FillSummaryFeatures(GetDocsumsState *, IDocsumEnvironment *) override { } - void FillRankFeatures(GetDocsumsState *, IDocsumEnvironment *) override { } + void FillSummaryFeatures(GetDocsumsState&) override { } + void FillRankFeatures(GetDocsumsState&) override { } std::unique_ptr<MatchingElements> fill_matching_elements(const search::MatchingElementsFields &) override { abort(); } }; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp index 285148951fa..60e3bd6d815 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp @@ -364,7 +364,7 @@ create_multi_writer(const IAttributeVector& attr, bool filter_elements, std::sha } std::unique_ptr<DocsumFieldWriter> -AttributeDFWFactory::create(IAttributeManager& attr_mgr, +AttributeDFWFactory::create(const IAttributeManager& attr_mgr, const vespalib::string& attr_name, bool filter_elements, std::shared_ptr<MatchingElementsFields> matching_elems_fields) diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.h b/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.h index 88356ac783e..2b61803ebb3 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.h @@ -18,7 +18,7 @@ namespace search::docsummary { */ class AttributeDFWFactory { public: - static std::unique_ptr<DocsumFieldWriter> create(IAttributeManager& attr_mgr, + static std::unique_ptr<DocsumFieldWriter> create(const IAttributeManager& attr_mgr, const vespalib::string& attr_name, bool filter_elements = false, std::shared_ptr<MatchingElementsFields> matching_elems_fields = std::shared_ptr<MatchingElementsFields>()); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.cpp index fdbf9cf169d..cebfac4c86d 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.cpp @@ -19,7 +19,7 @@ using vespalib::IllegalArgumentException; namespace search::docsummary { -DocsumFieldWriterFactory::DocsumFieldWriterFactory(bool use_v8_geo_positions, IDocsumEnvironment* env) +DocsumFieldWriterFactory::DocsumFieldWriterFactory(bool use_v8_geo_positions, IDocsumEnvironment& env) : _use_v8_geo_positions(use_v8_geo_positions), _env(env), _matching_elems_fields(std::make_shared<MatchingElementsFields>()) @@ -28,6 +28,12 @@ DocsumFieldWriterFactory::DocsumFieldWriterFactory(bool use_v8_geo_positions, ID DocsumFieldWriterFactory::~DocsumFieldWriterFactory() = default; +bool +DocsumFieldWriterFactory::has_attribute_manager() const noexcept +{ + return getEnvironment().getAttributeManager() != nullptr; +} + std::unique_ptr<DocsumFieldWriter> DocsumFieldWriterFactory::create_docsum_field_writer(const vespalib::string& fieldName, const vespalib::string& overrideName, const vespalib::string& argument, bool& rc) { @@ -35,7 +41,7 @@ DocsumFieldWriterFactory::create_docsum_field_writer(const vespalib::string& fie std::unique_ptr<DocsumFieldWriter> fieldWriter; if (overrideName == "dynamicteaser") { if ( ! argument.empty() ) { - auto fw = std::make_unique<DynamicTeaserDFW>(getEnvironment()->getJuniper()); + auto fw = std::make_unique<DynamicTeaserDFW>(getEnvironment().getJuniper()); auto fw_ptr = fw.get(); fieldWriter = std::move(fw); rc = fw_ptr->Init(fieldName.c_str(), argument); @@ -43,10 +49,10 @@ DocsumFieldWriterFactory::create_docsum_field_writer(const vespalib::string& fie throw IllegalArgumentException("Missing argument"); } } else if (overrideName == "summaryfeatures") { - fieldWriter = std::make_unique<SummaryFeaturesDFW>(getEnvironment()); + fieldWriter = std::make_unique<SummaryFeaturesDFW>(); rc = true; } else if (overrideName == "rankfeatures") { - fieldWriter = std::make_unique<RankFeaturesDFW>(getEnvironment()); + fieldWriter = std::make_unique<RankFeaturesDFW>(); rc = true; } else if (overrideName == "empty") { fieldWriter = std::make_unique<EmptyDFW>(); @@ -59,38 +65,38 @@ DocsumFieldWriterFactory::create_docsum_field_writer(const vespalib::string& fie throw IllegalArgumentException("Missing argument"); } } else if (overrideName == "absdist") { - if (getEnvironment()) { - fieldWriter = AbsDistanceDFW::create(argument.c_str(), getEnvironment()->getAttributeManager()); + if (has_attribute_manager()) { + fieldWriter = AbsDistanceDFW::create(argument.c_str(), getEnvironment().getAttributeManager()); rc = static_cast<bool>(fieldWriter); } } else if (overrideName == "positions") { - if (getEnvironment()) { - fieldWriter = PositionsDFW::create(argument.c_str(), getEnvironment()->getAttributeManager(), _use_v8_geo_positions); + if (has_attribute_manager()) { + fieldWriter = PositionsDFW::create(argument.c_str(), getEnvironment().getAttributeManager(), _use_v8_geo_positions); rc = static_cast<bool>(fieldWriter); } } else if (overrideName == "geopos") { - if (getEnvironment()) { - fieldWriter = GeoPositionDFW::create(argument.c_str(), getEnvironment()->getAttributeManager(), _use_v8_geo_positions); + if (has_attribute_manager()) { + fieldWriter = GeoPositionDFW::create(argument.c_str(), getEnvironment().getAttributeManager(), _use_v8_geo_positions); rc = static_cast<bool>(fieldWriter); } } else if (overrideName == "attribute") { - if (getEnvironment() && getEnvironment()->getAttributeManager()) { - fieldWriter = AttributeDFWFactory::create(*getEnvironment()->getAttributeManager(), argument); + if (has_attribute_manager()) { + fieldWriter = AttributeDFWFactory::create(*getEnvironment().getAttributeManager(), argument); rc = true; // Allow missing attribute vector } } else if (overrideName == "attributecombiner") { - if (getEnvironment() && getEnvironment()->getAttributeManager()) { - auto attr_ctx = getEnvironment()->getAttributeManager()->createContext(); + if (has_attribute_manager()) { + auto attr_ctx = getEnvironment().getAttributeManager()->createContext(); const vespalib::string& source_field = argument.empty() ? fieldName : argument; fieldWriter = AttributeCombinerDFW::create(source_field, *attr_ctx, false, std::shared_ptr<MatchingElementsFields>()); rc = static_cast<bool>(fieldWriter); } } else if (overrideName == "matchedattributeelementsfilter") { const vespalib::string& source_field = argument.empty() ? fieldName : argument; - if (getEnvironment() && getEnvironment()->getAttributeManager()) { - auto attr_ctx = getEnvironment()->getAttributeManager()->createContext(); + if (has_attribute_manager()) { + auto attr_ctx = getEnvironment().getAttributeManager()->createContext(); if (attr_ctx->getAttribute(source_field) != nullptr) { - fieldWriter = AttributeDFWFactory::create(*getEnvironment()->getAttributeManager(), source_field, true, _matching_elems_fields); + fieldWriter = AttributeDFWFactory::create(*getEnvironment().getAttributeManager(), source_field, true, _matching_elems_fields); } else { fieldWriter = AttributeCombinerDFW::create(source_field, *attr_ctx, true, _matching_elems_fields); } @@ -98,8 +104,8 @@ DocsumFieldWriterFactory::create_docsum_field_writer(const vespalib::string& fie } } else if (overrideName == "matchedelementsfilter") { const vespalib::string& source_field = argument.empty() ? fieldName : argument; - if (getEnvironment() && getEnvironment()->getAttributeManager()) { - auto attr_ctx = getEnvironment()->getAttributeManager()->createContext(); + if (has_attribute_manager()) { + auto attr_ctx = getEnvironment().getAttributeManager()->createContext(); fieldWriter = MatchedElementsFilterDFW::create(source_field,*attr_ctx, _matching_elems_fields); rc = static_cast<bool>(fieldWriter); } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.h b/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.h index 2725ca748bd..b4f28524eba 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.h @@ -16,12 +16,13 @@ class IDocsumEnvironment; class DocsumFieldWriterFactory : public IDocsumFieldWriterFactory { bool _use_v8_geo_positions; - IDocsumEnvironment * _env; + IDocsumEnvironment& _env; protected: std::shared_ptr<MatchingElementsFields> _matching_elems_fields; - IDocsumEnvironment * getEnvironment() { return _env; } + IDocsumEnvironment& getEnvironment() const noexcept { return _env; } + bool has_attribute_manager() const noexcept; public: - DocsumFieldWriterFactory(bool use_v8_geo_positions, IDocsumEnvironment* env); + DocsumFieldWriterFactory(bool use_v8_geo_positions, IDocsumEnvironment& env); ~DocsumFieldWriterFactory() override; std::unique_ptr<DocsumFieldWriter> create_docsum_field_writer(const vespalib::string& fieldName, const vespalib::string& overrideName, const vespalib::string& argument, bool& rc) override; }; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.h index f5a82b4f79b..40c4e134bbc 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.h @@ -16,7 +16,7 @@ class ResultConfig; class DynamicDocsumConfig { public: - DynamicDocsumConfig(IDocsumEnvironment * env, DynamicDocsumWriter * writer) : + DynamicDocsumConfig(IDocsumEnvironment& env, DynamicDocsumWriter * writer) : _env(env), _writer(writer) { } @@ -24,12 +24,12 @@ public: void configure(const vespa::config::search::SummarymapConfig &cfg); protected: using string = vespalib::string; - IDocsumEnvironment * getEnvironment() { return _env; } + IDocsumEnvironment& getEnvironment() { return _env; } const ResultConfig & getResultConfig() const; virtual std::unique_ptr<IDocsumFieldWriterFactory> make_docsum_field_writer_factory(); private: - IDocsumEnvironment * _env; + IDocsumEnvironment& _env; DynamicDocsumWriter * _writer; }; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h index d3d09224f64..0ebcc20ef42 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h @@ -32,8 +32,8 @@ class DocsumFieldWriterState; class GetDocsumsStateCallback { public: - virtual void FillSummaryFeatures(GetDocsumsState * state, IDocsumEnvironment * env) = 0; - virtual void FillRankFeatures(GetDocsumsState * state, IDocsumEnvironment * env) = 0; + virtual void FillSummaryFeatures(GetDocsumsState& state) = 0; + virtual void FillRankFeatures(GetDocsumsState& state) = 0; virtual std::unique_ptr<MatchingElements> fill_matching_elements(const MatchingElementsFields &matching_elems_fields) = 0; virtual ~GetDocsumsStateCallback() = default; GetDocsumsStateCallback(const GetDocsumsStateCallback &) = delete; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp index 28c55f1c2a6..d911ac562c2 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp @@ -143,7 +143,7 @@ DynamicDocsumWriter::Override(const char *fieldName, std::unique_ptr<DocsumField void -DynamicDocsumWriter::InitState(IAttributeManager & attrMan, GetDocsumsState *state) +DynamicDocsumWriter::InitState(const IAttributeManager & attrMan, GetDocsumsState *state) { state->_kwExtractor = _keywordExtractor.get(); state->_attrCtx = attrMan.createContext(); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h index e8ef80663f9..ac0d461ab81 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h @@ -37,7 +37,7 @@ public: }; virtual ~IDocsumWriter() = default; - virtual void InitState(search::IAttributeManager & attrMan, GetDocsumsState *state) = 0; + virtual void InitState(const search::IAttributeManager & attrMan, GetDocsumsState *state) = 0; virtual void WriteDocsum(uint32_t docid, GetDocsumsState *state, IDocsumStore *docinfos, Inserter & target) = 0; virtual void insertDocsum(const ResolveClassInfo & rci, uint32_t docid, GetDocsumsState *state, @@ -67,7 +67,7 @@ public: const ResultConfig *GetResultConfig() { return _resultConfig.get(); } bool Override(const char *fieldName, std::unique_ptr<DocsumFieldWriter> writer); - void InitState(search::IAttributeManager & attrMan, GetDocsumsState *state) override; + void InitState(const search::IAttributeManager & attrMan, GetDocsumsState *state) override; void WriteDocsum(uint32_t docid, GetDocsumsState *state, IDocsumStore *docinfos, Inserter & inserter) override; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp index 975fd7f0a6a..474f329799b 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp @@ -101,7 +101,7 @@ GeoPositionDFW::insertField(uint32_t docid, GetDocsumsState * dsState, ResType, GeoPositionDFW::UP GeoPositionDFW::create(const char *attribute_name, - IAttributeManager *attribute_manager, + const IAttributeManager *attribute_manager, bool useV8geoPositions) { GeoPositionDFW::UP ret; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h index db43592c0b4..1bc8b523160 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h @@ -17,7 +17,7 @@ public: typedef std::unique_ptr<GeoPositionDFW> UP; GeoPositionDFW(const vespalib::string & attrName, bool useV8geoPositions); void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const override; - static UP create(const char *attribute_name, IAttributeManager *attribute_manager, bool useV8geoPositions); + static UP create(const char *attribute_name, const IAttributeManager *attribute_manager, bool useV8geoPositions); }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/idocsumenvironment.h b/searchsummary/src/vespa/searchsummary/docsummary/idocsumenvironment.h index bc6a347590a..1e9f550ac6d 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/idocsumenvironment.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/idocsumenvironment.h @@ -12,10 +12,10 @@ namespace search::docsummary { **/ class IDocsumEnvironment { public: - virtual search::IAttributeManager * getAttributeManager() = 0; + virtual const search::IAttributeManager * getAttributeManager() const = 0; virtual vespalib::string lookupIndex(const vespalib::string & s) const = 0; virtual juniper::Juniper * getJuniper() = 0; - virtual ~IDocsumEnvironment() {} + virtual ~IDocsumEnvironment() = default; }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp index aa7db0e2745..1000fee8423 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp @@ -252,7 +252,7 @@ PositionsDFW::insertField(uint32_t docid, GetDocsumsState * dsState, ResType typ //-------------------------------------------------------------------------- -PositionsDFW::UP PositionsDFW::create(const char *attribute_name, IAttributeManager *attribute_manager, bool useV8geoPositions) { +PositionsDFW::UP PositionsDFW::create(const char *attribute_name, const IAttributeManager *attribute_manager, bool useV8geoPositions) { PositionsDFW::UP ret; if (attribute_manager != nullptr) { if (!attribute_name) { @@ -274,7 +274,7 @@ PositionsDFW::UP PositionsDFW::create(const char *attribute_name, IAttributeMana } std::unique_ptr<DocsumFieldWriter> -AbsDistanceDFW::create(const char *attribute_name, IAttributeManager *attribute_manager) { +AbsDistanceDFW::create(const char *attribute_name, const IAttributeManager *attribute_manager) { std::unique_ptr<DocsumFieldWriter> ret; if (attribute_manager != nullptr) { if (!attribute_name) { diff --git a/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h index c0d9d7d8111..d0a38d1004e 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h @@ -46,7 +46,7 @@ public: void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const override; - static std::unique_ptr<DocsumFieldWriter> create(const char *attribute_name, IAttributeManager *index_man); + static std::unique_ptr<DocsumFieldWriter> create(const char *attribute_name, const IAttributeManager *index_man); }; @@ -61,7 +61,7 @@ public: PositionsDFW(const vespalib::string & attrName, bool useV8geoPositions); bool IsGenerated() const override { return true; } void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const override; - static UP create(const char *attribute_name, IAttributeManager *index_man, bool useV8geoPositions); + static UP create(const char *attribute_name, const IAttributeManager *index_man, bool useV8geoPositions); }; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp index 5b08020c010..b7b10d9c1ea 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp @@ -7,9 +7,7 @@ namespace search::docsummary { -RankFeaturesDFW::RankFeaturesDFW(IDocsumEnvironment * env) : - _env(env) -{ } +RankFeaturesDFW::RankFeaturesDFW() = default; RankFeaturesDFW::~RankFeaturesDFW() = default; @@ -18,7 +16,7 @@ RankFeaturesDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType, vespalib::slime::Inserter &target) const { if ( !state->_rankFeatures ) { - state->_callback.FillRankFeatures(state, _env); + state->_callback.FillRankFeatures(*state); if (state->_rankFeatures.get() == nullptr) { // still no rank features to write return; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h index d0516f9f0b7..023d5ad158f 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h @@ -10,11 +10,8 @@ class IDocsumEnvironment; class RankFeaturesDFW : public SimpleDFW { -private: - IDocsumEnvironment * _env; - public: - RankFeaturesDFW(IDocsumEnvironment * env); + RankFeaturesDFW(); RankFeaturesDFW(const RankFeaturesDFW &) = delete; RankFeaturesDFW & operator=(const RankFeaturesDFW &) = delete; ~RankFeaturesDFW() override; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp index f5fc942e40c..76bae0cee97 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp @@ -11,10 +11,7 @@ LOG_SETUP(".searchlib.docsummary.summaryfeaturesdfw"); namespace search::docsummary { -SummaryFeaturesDFW::SummaryFeaturesDFW(IDocsumEnvironment * env) : - _env(env) -{ -} +SummaryFeaturesDFW::SummaryFeaturesDFW() = default; SummaryFeaturesDFW::~SummaryFeaturesDFW() = default; @@ -27,7 +24,7 @@ SummaryFeaturesDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType, return; } if ( ! state->_summaryFeatures) { - state->_callback.FillSummaryFeatures(state, _env); + state->_callback.FillSummaryFeatures(*state); if ( !state->_summaryFeatures) { // still no summary features to write return; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h index 45d7f7fa641..fd1092f840a 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h @@ -10,11 +10,8 @@ class IDocsumEnvironment; class SummaryFeaturesDFW : public SimpleDFW { -private: - IDocsumEnvironment * _env; - public: - SummaryFeaturesDFW(IDocsumEnvironment * env); + SummaryFeaturesDFW(); SummaryFeaturesDFW(const SummaryFeaturesDFW &) = delete; SummaryFeaturesDFW & operator=(const SummaryFeaturesDFW &) = delete; ~SummaryFeaturesDFW() override; diff --git a/searchsummary/src/vespa/searchsummary/test/mock_state_callback.h b/searchsummary/src/vespa/searchsummary/test/mock_state_callback.h index df035fca685..71c2be19bba 100644 --- a/searchsummary/src/vespa/searchsummary/test/mock_state_callback.h +++ b/searchsummary/src/vespa/searchsummary/test/mock_state_callback.h @@ -16,8 +16,8 @@ public: { } ~MockStateCallback() override { } - void FillSummaryFeatures(GetDocsumsState*, IDocsumEnvironment*) override { } - void FillRankFeatures(GetDocsumsState*, IDocsumEnvironment*) override { } + void FillSummaryFeatures(GetDocsumsState&) override { } + void FillRankFeatures(GetDocsumsState&) override { } std::unique_ptr<MatchingElements> fill_matching_elements(const search::MatchingElementsFields&) override { return std::make_unique<MatchingElements>(_matching_elems); } diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp b/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp index dcf093ee92b..c7ca9b52dc9 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp +++ b/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp @@ -35,7 +35,7 @@ void populate_fields(MatchingElementsFields& fields, VsmfieldsConfig& fields_con } -DocsumFieldWriterFactory::DocsumFieldWriterFactory(bool use_v8_geo_positions, IDocsumEnvironment* env, const vespa::config::search::vsm::VsmfieldsConfig& vsm_fields_config) +DocsumFieldWriterFactory::DocsumFieldWriterFactory(bool use_v8_geo_positions, IDocsumEnvironment& env, const vespa::config::search::vsm::VsmfieldsConfig& vsm_fields_config) : search::docsummary::DocsumFieldWriterFactory(use_v8_geo_positions, env), _vsm_fields_config(vsm_fields_config) { diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h b/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h index 4084b435bf2..b8362c06f78 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h +++ b/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h @@ -16,7 +16,7 @@ class DocsumFieldWriterFactory : public search::docsummary::DocsumFieldWriterFac const vespa::config::search::vsm::VsmfieldsConfig& _vsm_fields_config; public: - DocsumFieldWriterFactory(bool use_v8_geo_positions, search::docsummary::IDocsumEnvironment* env, const vespa::config::search::vsm::VsmfieldsConfig& vsm_fields_config); + DocsumFieldWriterFactory(bool use_v8_geo_positions, search::docsummary::IDocsumEnvironment& env, const vespa::config::search::vsm::VsmfieldsConfig& vsm_fields_config); ~DocsumFieldWriterFactory() override; std::unique_ptr<search::docsummary::DocsumFieldWriter> create_docsum_field_writer(const vespalib::string& fieldName, const vespalib::string& overrideName, const vespalib::string& argument, bool& rc) override; diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsumconfig.cpp b/streamingvisitors/src/vespa/vsm/vsm/docsumconfig.cpp index 22c3b270836..7525477fb52 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/docsumconfig.cpp +++ b/streamingvisitors/src/vespa/vsm/vsm/docsumconfig.cpp @@ -9,7 +9,7 @@ using vespa::config::search::vsm::VsmfieldsConfig; namespace vsm { -DynamicDocsumConfig::DynamicDocsumConfig(search::docsummary::IDocsumEnvironment* env, search::docsummary::DynamicDocsumWriter* writer, std::shared_ptr<VsmfieldsConfig> vsm_fields_config) +DynamicDocsumConfig::DynamicDocsumConfig(search::docsummary::IDocsumEnvironment& env, search::docsummary::DynamicDocsumWriter* writer, std::shared_ptr<VsmfieldsConfig> vsm_fields_config) : Parent(env, writer), _vsm_fields_config(std::move(vsm_fields_config)) { diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsumconfig.h b/streamingvisitors/src/vespa/vsm/vsm/docsumconfig.h index f423a0b478a..d5b7e258165 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/docsumconfig.h +++ b/streamingvisitors/src/vespa/vsm/vsm/docsumconfig.h @@ -18,7 +18,7 @@ public: private: std::shared_ptr<VsmfieldsConfig> _vsm_fields_config; public: - DynamicDocsumConfig(search::docsummary::IDocsumEnvironment* env, search::docsummary::DynamicDocsumWriter* writer, std::shared_ptr<VsmfieldsConfig> vsm_fields_config); + DynamicDocsumConfig(search::docsummary::IDocsumEnvironment& env, search::docsummary::DynamicDocsumWriter* writer, std::shared_ptr<VsmfieldsConfig> vsm_fields_config); private: std::unique_ptr<search::docsummary::IDocsumFieldWriterFactory> make_docsum_field_writer_factory() override; }; diff --git a/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp b/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp index 03965e6c63e..2bf6b2f3972 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp +++ b/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp @@ -22,20 +22,18 @@ GetDocsumsStateCallback::GetDocsumsStateCallback() : _matching_elements_filler() { } -void GetDocsumsStateCallback::FillSummaryFeatures(GetDocsumsState * state, IDocsumEnvironment * env) +void GetDocsumsStateCallback::FillSummaryFeatures(GetDocsumsState& state) { - (void) env; if (_summaryFeatures) { // set the summary features to write to the docsum - state->_summaryFeatures = _summaryFeatures; - state->_summaryFeaturesCached = true; + state._summaryFeatures = _summaryFeatures; + state._summaryFeaturesCached = true; } } -void GetDocsumsStateCallback::FillRankFeatures(GetDocsumsState * state, IDocsumEnvironment * env) +void GetDocsumsStateCallback::FillRankFeatures(GetDocsumsState& state) { - (void) env; if (_rankFeatures) { // set the rank features to write to the docsum - state->_rankFeatures = _rankFeatures; + state._rankFeatures = _rankFeatures; } } @@ -168,7 +166,7 @@ VSMAdapter::configure(const VSMConfigSnapshot & snapshot) docsumTools->set_writer(std::move(writer)); // configure dynamic docsum writer - DynamicDocsumConfig dynDocsumConfig(docsumTools.get(), docsumTools->getDocsumWriter(), _fieldsCfg.get()); + DynamicDocsumConfig dynDocsumConfig(*docsumTools, docsumTools->getDocsumWriter(), _fieldsCfg.get()); dynDocsumConfig.configure(*summaryMap.get()); // configure new docsum tools diff --git a/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.h b/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.h index 2788475b4ad..b8583dc801d 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.h +++ b/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.h @@ -38,8 +38,8 @@ private: public: GetDocsumsStateCallback(); - void FillSummaryFeatures(GetDocsumsState * state, IDocsumEnvironment * env) override; - void FillRankFeatures(GetDocsumsState * state, IDocsumEnvironment * env) override; + void FillSummaryFeatures(GetDocsumsState& state) override; + void FillRankFeatures(GetDocsumsState& state) override; virtual void FillDocumentLocations(GetDocsumsState * state, IDocsumEnvironment * env); virtual std::unique_ptr<search::MatchingElements> fill_matching_elements(const search::MatchingElementsFields& fields) override; void setSummaryFeatures(const search::FeatureSet::SP & sf) { _summaryFeatures = sf; } @@ -88,7 +88,7 @@ public: bool obtainFieldNames(const FastS_VsmsummaryHandle &cfg); // inherit doc from IDocsumEnvironment - search::IAttributeManager * getAttributeManager() override { return NULL; } + const search::IAttributeManager * getAttributeManager() const override { return nullptr; } vespalib::string lookupIndex(const vespalib::string&) const override { return ""; } juniper::Juniper * getJuniper() override { return _juniper.get(); } }; |