diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-08-26 13:09:52 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-08-26 13:09:52 +0200 |
commit | aa87d472c6b4f1e661c09378b5f86d947b8c7fb0 (patch) | |
tree | e9aabdedfc511aefec755b54a49f7d34eb7a277b /searchsummary | |
parent | 3604078ee2f7ea417d9da734b5427beea03e5d90 (diff) |
Remove IDocsumStore::getSummaryClassId() member function.
Diffstat (limited to 'searchsummary')
7 files changed, 35 insertions, 93 deletions
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 2565509f50f..267d2f6f0aa 100644 --- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp +++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp @@ -96,7 +96,6 @@ struct DocsumFixture : IDocsumStore, GetDocsumsStateCallback { } return std::make_unique<DocsumStoreDocument>(std::move(doc)); } - uint32_t getSummaryClassId() const override { return 0; } void FillSummaryFeatures(GetDocsumsState *, IDocsumEnvironment *) override { } void FillRankFeatures(GetDocsumsState *, IDocsumEnvironment *) override { } std::unique_ptr<MatchingElements> fill_matching_elements(const search::MatchingElementsFields &) override { abort(); } @@ -123,6 +122,7 @@ DocsumFixture::DocsumFixture() EXPECT_TRUE(cfg->AddConfigEntry("longstring_field", RES_LONG_STRING)); EXPECT_TRUE(cfg->AddConfigEntry("longdata_field", RES_LONG_DATA)); EXPECT_TRUE(cfg->AddConfigEntry("int_pair_field", RES_JSONSTRING)); + config->set_default_result_class_id(0); config->CreateEnumMaps(); writer.reset(new DynamicDocsumWriter(config, 0)); int_pair_type.addField(Field("foo", *DataType::INT)); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp index c61ef4a0330..ddb1c5a164a 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp @@ -119,9 +119,6 @@ DynamicDocsumConfig::configure(const vespa::config::search::SummarymapConfig &cf { std::vector<string> strCfg; auto matching_elems_fields = std::make_shared<MatchingElementsFields>(); - if ((cfg.defaultoutputclass != -1) && !_writer->SetDefaultOutputClass(cfg.defaultoutputclass)) { - throw IllegalArgumentException(make_string("could not set default output class to %d", cfg.defaultoutputclass)); - } for (size_t i = 0; i < cfg.override.size(); ++i) { const vespa::config::search::SummarymapConfig::Override & o = cfg.override[i]; bool rc(false); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h index 2c2908ff95d..6e6d47cc950 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h @@ -39,11 +39,6 @@ public: * @param docid local document id **/ virtual std::unique_ptr<const IDocsumStoreDocument> getMappedDocsum(uint32_t docid) = 0; - - /** - * Will return default input class used. - **/ - virtual uint32_t getSummaryClassId() const = 0; }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp index 29af67a6fe0..c7dceb6914d 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp @@ -32,12 +32,9 @@ IDocsumWriter::slime2RawBuf(const Slime & slime, RawBuf & buf) } DynamicDocsumWriter::ResolveClassInfo -DynamicDocsumWriter::resolveClassInfo(vespalib::stringref outputClassName, uint32_t inputClassId) const +DynamicDocsumWriter::resolveClassInfo(vespalib::stringref outputClassName) const { DynamicDocsumWriter::ResolveClassInfo rci = resolveOutputClass(outputClassName); - if (!rci.mustSkip && !rci.allGenerated) { - resolveInputClass(rci, inputClassId); - } return rci; } @@ -45,49 +42,34 @@ DynamicDocsumWriter::ResolveClassInfo DynamicDocsumWriter::resolveOutputClass(vespalib::stringref summaryClass) const { DynamicDocsumWriter::ResolveClassInfo result; - uint32_t id = _defaultOutputClass; - id = _resultConfig->LookupResultClassId(summaryClass, id); - - if (id != ResultConfig::NoClassID()) { - const ResultClass *oC = _resultConfig->LookupResultClass(id); - if (oC == nullptr) { - Issue::report("Illegal docsum class requested: %s, using empty docsum for documents", - vespalib::string(summaryClass).c_str()); - result.mustSkip = true; - } else { - result.outputClass = oC; - const ResultClass::DynamicInfo *rcInfo = oC->getDynamicInfo(); - if (rcInfo->_generateCnt == oC->GetNumEntries()) { - LOG_ASSERT(rcInfo->_overrideCnt == rcInfo->_generateCnt); - result.allGenerated = true; - } - result.outputClassInfo = rcInfo; + auto id = _resultConfig->LookupResultClassId(summaryClass); + + const ResultClass *oC = (id != ResultConfig::NoClassID()) ? _resultConfig->LookupResultClass(id) : nullptr; + if (oC == nullptr) { + Issue::report("Illegal docsum class requested: %s, using empty docsum for documents", + vespalib::string(summaryClass).c_str()); + result.mustSkip = true; + } else { + result.outputClass = oC; + const ResultClass::DynamicInfo *rcInfo = oC->getDynamicInfo(); + if (rcInfo->_generateCnt == oC->GetNumEntries()) { + LOG_ASSERT(rcInfo->_overrideCnt == rcInfo->_generateCnt); + result.allGenerated = true; } + result.outputClassInfo = rcInfo; } result.outputClassId = id; return result; } void -DynamicDocsumWriter::resolveInputClass(ResolveClassInfo &rci, uint32_t id) const -{ - rci.inputClass = _resultConfig->LookupResultClass(id); - if (rci.inputClass == nullptr) { - rci.mustSkip = true; - return; - } - if (rci.outputClass == nullptr) { - LOG_ASSERT(rci.outputClassId == ResultConfig::NoClassID()); - rci.outputClassId = id; - rci.outputClass = rci.inputClass; - rci.outputClassInfo = rci.inputClass->getDynamicInfo(); - } -} - -void DynamicDocsumWriter::insertDocsum(const ResolveClassInfo & rci, uint32_t docid, GetDocsumsState *state, IDocsumStore *docinfos, vespalib::slime::Inserter& topInserter) { + if (rci.mustSkip || rci.outputClass == nullptr) { + // Use empty docsum when illegal docsum class has been requested + return; + } if (rci.allGenerated) { // generate docsum entry on-the-fly vespalib::slime::Cursor & docsum = topInserter.insertObject(); @@ -126,7 +108,6 @@ DynamicDocsumWriter::insertDocsum(const ResolveClassInfo & rci, uint32_t docid, DynamicDocsumWriter::DynamicDocsumWriter( ResultConfig *config, KeywordExtractor *extractor) : _resultConfig(config), _keywordExtractor(extractor), - _defaultOutputClass(ResultConfig::NoClassID()), _numClasses(config->GetNumResultClasses()), _numEnumValues(config->GetFieldNameEnum().GetNumEntries()), _numFieldWriterStates(0), @@ -164,26 +145,6 @@ DynamicDocsumWriter::~DynamicDocsumWriter() } bool -DynamicDocsumWriter::SetDefaultOutputClass(uint32_t classID) -{ - const ResultClass *resClass = _resultConfig->LookupResultClass(classID); - - if (resClass == nullptr || - _defaultOutputClass != ResultConfig::NoClassID()) - { - if (resClass == nullptr) { - LOG(warning, "cannot set default output docsum class to %d; class not defined", classID); - } else if (_defaultOutputClass != ResultConfig::NoClassID()) { - LOG(warning, "cannot set default output docsum class to %d; value already set", classID); - } - return false; - } - _defaultOutputClass = classID; - return true; -} - - -bool DynamicDocsumWriter::Override(const char *fieldName, DocsumFieldWriter *writer) { uint32_t fieldEnumValue = _resultConfig->GetFieldNameEnum().Lookup(fieldName); @@ -245,7 +206,7 @@ DynamicDocsumWriter::WriteDocsum(uint32_t docid, GetDocsumsState *state, IDocsum { vespalib::Slime slime; vespalib::slime::SlimeInserter inserter(slime); - ResolveClassInfo rci = resolveClassInfo(state->_args.getResultClassName(), docinfos->getSummaryClassId()); + ResolveClassInfo rci = resolveClassInfo(state->_args.getResultClassName()); insertDocsum(rci, docid, state, docinfos, inserter); return slime2RawBuf(slime, *target); } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h index ba1ffb25d22..db7239ce503 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h @@ -29,11 +29,10 @@ public: uint32_t outputClassId; const ResultClass *outputClass; const ResultClass::DynamicInfo *outputClassInfo; - const ResultClass *inputClass; ResolveClassInfo() : mustSkip(false), allGenerated(false), outputClassId(ResultConfig::NoClassID()), - outputClass(nullptr), outputClassInfo(nullptr), inputClass(nullptr) + outputClass(nullptr), outputClassInfo(nullptr) { } }; @@ -43,7 +42,7 @@ public: IDocsumStore *docinfos, search::RawBuf *target) = 0; virtual void insertDocsum(const ResolveClassInfo & rci, uint32_t docid, GetDocsumsState *state, IDocsumStore *docinfos, vespalib::slime::Inserter & target) = 0; - virtual ResolveClassInfo resolveClassInfo(vespalib::stringref outputClassName, uint32_t inputClassId) const = 0; + virtual ResolveClassInfo resolveClassInfo(vespalib::stringref outputClassName) const = 0; static uint32_t slime2RawBuf(const vespalib::Slime & slime, RawBuf & buf); }; @@ -55,15 +54,12 @@ class DynamicDocsumWriter : public IDocsumWriter private: ResultConfig *_resultConfig; KeywordExtractor *_keywordExtractor; - uint32_t _defaultOutputClass; uint32_t _numClasses; uint32_t _numEnumValues; uint32_t _numFieldWriterStates; ResultClass::DynamicInfo *_classInfoTable; DocsumFieldWriter** _overrideTable; - void resolveInputClass(ResolveClassInfo &rci, uint32_t id) const; - ResolveClassInfo resolveOutputClass(vespalib::stringref outputClassName) const; public: @@ -74,7 +70,6 @@ public: ResultConfig *GetResultConfig() { return _resultConfig; } - bool SetDefaultOutputClass(uint32_t classID); bool Override(const char *fieldName, DocsumFieldWriter *writer); void InitState(search::IAttributeManager & attrMan, GetDocsumsState *state) override; uint32_t WriteDocsum(uint32_t docid, GetDocsumsState *state, @@ -83,7 +78,7 @@ public: void insertDocsum(const ResolveClassInfo & outputClassInfo, uint32_t docid, GetDocsumsState *state, IDocsumStore *docinfos, vespalib::slime::Inserter & target) override; - ResolveClassInfo resolveClassInfo(vespalib::stringref outputClassName, uint32_t inputClassId) const override; + ResolveClassInfo resolveClassInfo(vespalib::stringref outputClassName) const override; }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp index 3679bddc57e..7fe95b37c4a 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp @@ -67,6 +67,11 @@ ResultConfig::AddResultClass(const char *name, uint32_t id) return ret; } +void +ResultConfig::set_default_result_class_id(uint32_t id) +{ + _defaultSummaryId = id; +} const ResultClass* ResultConfig::LookupResultClass(uint32_t id) const @@ -76,16 +81,10 @@ ResultConfig::LookupResultClass(uint32_t id) const } uint32_t -ResultConfig::LookupResultClassId(const vespalib::string &name, uint32_t def) const -{ - NameMap::const_iterator found(_nameLookup.find(name)); - return (found != _nameLookup.end()) ? found->second : def; -} - -uint32_t ResultConfig::LookupResultClassId(const vespalib::string &name) const { - return LookupResultClassId(name, (name.empty() || (name == "default")) ? _defaultSummaryId : NoClassID()); + NameMap::const_iterator found(_nameLookup.find(name)); + return (found != _nameLookup.end()) ? found->second : ((name.empty() || (name == "default")) ? _defaultSummaryId : NoClassID()); } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h index b37b652935f..5f9348da7ab 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h @@ -127,6 +127,10 @@ public: **/ ResultClass *AddResultClass(const char *name, uint32_t classID); + /* + * Set default result class id. + */ + void set_default_result_class_id(uint32_t id); /** * Obtain result class from the result class id. This method is used @@ -141,15 +145,6 @@ public: /** * Obtain result class id from the result class name. * - * @return result class id or 'def' if not found - * @param name the name of the result class - * @param def default return value if not found - **/ - uint32_t LookupResultClassId(const vespalib::string &name, uint32_t def) const; - - /** - * Obtain result class id from the result class name. - * * @return result class id or configured default if empty or "default". * @param name the name of the result class, NoClassId(-1) meaning undefined **/ |