summaryrefslogtreecommitdiffstats
path: root/searchsummary
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2022-08-26 13:09:52 +0200
committerTor Egge <Tor.Egge@online.no>2022-08-26 13:09:52 +0200
commitaa87d472c6b4f1e661c09378b5f86d947b8c7fb0 (patch)
treee9aabdedfc511aefec755b54a49f7d34eb7a277b /searchsummary
parent3604078ee2f7ea417d9da734b5427beea03e5d90 (diff)
Remove IDocsumStore::getSummaryClassId() member function.
Diffstat (limited to 'searchsummary')
-rw-r--r--searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp3
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h5
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp79
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h11
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp15
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h13
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
**/