summaryrefslogtreecommitdiffstats
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
parent3604078ee2f7ea417d9da734b5427beea03e5d90 (diff)
Remove IDocsumStore::getSummaryClassId() member function.
-rw-r--r--searchcore/src/tests/proton/docsummary/docsummary.cpp64
-rw-r--r--searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp1
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp5
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp16
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h19
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.cpp37
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.h38
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.cpp47
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.h36
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp34
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h6
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchview.cpp2
-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
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp6
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h1
23 files changed, 60 insertions, 384 deletions
diff --git a/searchcore/src/tests/proton/docsummary/docsummary.cpp b/searchcore/src/tests/proton/docsummary/docsummary.cpp
index f4ee877da0d..d93fa33e2ec 100644
--- a/searchcore/src/tests/proton/docsummary/docsummary.cpp
+++ b/searchcore/src/tests/proton/docsummary/docsummary.cpp
@@ -4,6 +4,7 @@
#include <vespa/config-bucketspaces.h>
#include <vespa/config/helper/configgetter.hpp>
#include <vespa/document/config/documenttypes_config_fwd.h>
+#include <vespa/document/datatype/documenttype.h>
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/document/test/make_bucket_space.h>
#include <vespa/eval/eval/simple_value.h>
@@ -134,10 +135,6 @@ public:
Document::UP doc = _bld.endDocument();
_str.write(_serialNum++, docId, *doc);
}
-
- FieldCacheRepo::UP createFieldCacheRepo(const ResultConfig &resConfig) const {
- return std::make_unique<FieldCacheRepo>(resConfig, _bld.getDocumentType());
- }
};
namespace {
@@ -293,7 +290,6 @@ class Fixture
private:
std::unique_ptr<vespa::config::search::SummaryConfig> _summaryCfg;
ResultConfig _resultCfg;
- std::set<vespalib::string> _markupFields;
public:
Fixture();
@@ -302,10 +298,6 @@ public:
const ResultConfig &getResultConfig() const{
return _resultCfg;
}
-
- const std::set<vespalib::string> &getMarkupFields() const{
- return _markupFields;
- }
};
bool
@@ -385,10 +377,7 @@ TEST_F("requireThatAdapterHandlesAllFieldTypes", Fixture)
bc.endDocument(0);
DocumentStoreAdapter dsa(bc._str,
- *bc._repo,
- f.getResultConfig(), "class0",
- bc.createFieldCacheRepo(f.getResultConfig())->getFieldCache("class0"),
- f.getMarkupFields());
+ *bc._repo);
auto res = dsa.getMappedDocsum(0);
EXPECT_EQUAL(-1, res->get_field_value("a")->getAsInt());
EXPECT_EQUAL(32767, res->get_field_value("b")->getAsInt());
@@ -420,9 +409,7 @@ TEST_F("requireThatAdapterHandlesMultipleDocuments", Fixture)
addInt(2000).endField();
bc.endDocument(1);
- DocumentStoreAdapter dsa(bc._str, *bc._repo, f.getResultConfig(), "class1",
- bc.createFieldCacheRepo(f.getResultConfig())->getFieldCache("class1"),
- f.getMarkupFields());
+ DocumentStoreAdapter dsa(bc._str, *bc._repo);
{ // doc 0
auto res = dsa.getMappedDocsum(0);
EXPECT_EQUAL(1000, res->get_field_value("a")->getAsInt());
@@ -454,9 +441,7 @@ TEST_F("requireThatAdapterHandlesDocumentIdField", Fixture)
addStr("foo").
endField();
bc.endDocument(0);
- DocumentStoreAdapter dsa(bc._str, *bc._repo, f.getResultConfig(), "class4",
- bc.createFieldCacheRepo(f.getResultConfig())->getFieldCache("class4"),
- f.getMarkupFields());
+ DocumentStoreAdapter dsa(bc._str, *bc._repo);
auto res = dsa.getMappedDocsum(0);
vespalib::Slime slime;
vespalib::slime::SlimeInserter inserter(slime);
@@ -795,9 +780,7 @@ TEST_F("requireThatAnnotationsAreUsed", Fixture)
EXPECT_EQUAL("foo bar", act->getValue("g")->getAsString());
EXPECT_EQUAL("foo bar", act->getValue("dynamicstring")->getAsString());
- DocumentStoreAdapter dsa(store, *bc._repo, f.getResultConfig(), "class0",
- bc.createFieldCacheRepo(f.getResultConfig())->getFieldCache("class0"),
- f.getMarkupFields());
+ DocumentStoreAdapter dsa(store, *bc._repo);
EXPECT_TRUE(assertString("foo bar", "g", dsa, 1));
EXPECT_TRUE(assertAnnotatedString(TERM_EMPTY + "foo" + TERM_SEP +
" " + TERM_SEP +
@@ -946,9 +929,7 @@ TEST_F("requireThatUrisAreUsed", Fixture)
EXPECT_TRUE(act.get() != nullptr);
EXPECT_EQUAL(exp->getType(), act->getType());
- DocumentStoreAdapter dsa(store, *bc._repo, f.getResultConfig(), "class0",
- bc.createFieldCacheRepo(f.getResultConfig())->getFieldCache("class0"),
- f.getMarkupFields());
+ DocumentStoreAdapter dsa(store, *bc._repo);
auto res = dsa.getMappedDocsum(1);
EXPECT_EQUAL("http://www.example.com:81/fluke?ab=2#4", SummaryFieldConverter::convertSummaryField(false, *res->get_field_value("urisingle"))->getAsString());
{
@@ -1073,9 +1054,7 @@ TEST_F("requireThatRawFieldsWorks", Fixture)
EXPECT_TRUE(act.get() != nullptr);
EXPECT_EQUAL(exp->getType(), act->getType());
- DocumentStoreAdapter dsa(store, *bc._repo, f.getResultConfig(), "class0",
- bc.createFieldCacheRepo(f.getResultConfig())->getFieldCache("class0"),
- f.getMarkupFields());
+ DocumentStoreAdapter dsa(store, *bc._repo);
ASSERT_TRUE(assertString(raw1s, "i", dsa, 1));
@@ -1100,41 +1079,14 @@ TEST_F("requireThatRawFieldsWorks", Fixture)
}
}
-TEST_F("requireThatFieldCacheRepoCanReturnDefaultFieldCache", Fixture)
-{
- Schema s;
- s.addSummaryField(Schema::SummaryField("a", schema::DataType::INT32));
- BuildContext bc(s);
- FieldCacheRepo::UP repo = bc.createFieldCacheRepo(f.getResultConfig());
- FieldCache::CSP cache = repo->getFieldCache("");
- EXPECT_TRUE(cache.get() == repo->getFieldCache("class1").get());
- EXPECT_EQUAL(1u, cache->size());
- EXPECT_EQUAL("a", cache->getField(0)->getName());
-}
-
Fixture::Fixture()
: _summaryCfg(),
- _resultCfg(),
- _markupFields()
+ _resultCfg()
{
std::string cfgId("summary");
_summaryCfg = ConfigGetter<vespa::config::search::SummaryConfig>::getConfig(
cfgId, ::config::FileSpec(TEST_PATH("summary.cfg")));
_resultCfg.ReadConfig(*_summaryCfg, cfgId.c_str());
- std::string mapCfgId("summarymap");
- std::unique_ptr<vespa::config::search::SummarymapConfig> mapCfg = ::config::ConfigGetter<vespa::config::search::SummarymapConfig>::getConfig(
- mapCfgId, ::config::FileSpec(TEST_PATH("summarymap.cfg")));
- for (size_t i = 0; i < mapCfg->override.size(); ++i) {
- const vespa::config::search::SummarymapConfig::Override & o = mapCfg->override[i];
- if (o.command == "dynamicteaser") {
- vespalib::string markupField = o.arguments;
- if (markupField.empty())
- continue;
- // Assume just one argument: source field that must contain markup
- _markupFields.insert(markupField);
- LOG(info, "Field %s has markup", markupField.c_str());
- }
- }
}
Fixture::~Fixture() = default;
diff --git a/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp b/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp
index b57ff052e82..21d50b0a9a1 100644
--- a/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp
@@ -2,6 +2,7 @@
#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/document/datatype/documenttype.h>
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/searchcore/proton/attribute/attribute_writer.h>
#include <vespa/searchcore/proton/attribute/attributemanager.h>
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/docsummary/CMakeLists.txt
index f17eae06d6e..9861812df6b 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/CMakeLists.txt
@@ -4,8 +4,6 @@ vespa_add_library(searchcore_docsummary STATIC
docsumcontext.cpp
document_store_explorer.cpp
documentstoreadapter.cpp
- fieldcache.cpp
- fieldcacherepo.cpp
summarycompacttarget.cpp
summaryflushtarget.cpp
summarymanager.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
index 353ee8d73fb..7b4db47f585 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
@@ -77,9 +77,8 @@ DocsumContext::createSlimeReply()
Cursor & root = response->setObject();
Cursor & array = root.setArray(DOCSUMS);
const Symbol docsumSym = response->insert(DOCSUM);
- IDocsumWriter::ResolveClassInfo rci = _docsumWriter.resolveClassInfo(_docsumState._args.getResultClassName(),
- _docsumStore.getSummaryClassId());
- _docsumState._omit_summary_features = rci.outputClass->omit_summary_features();
+ IDocsumWriter::ResolveClassInfo rci = _docsumWriter.resolveClassInfo(_docsumState._args.getResultClassName());
+ _docsumState._omit_summary_features = (rci.outputClass != nullptr) ? rci.outputClass->omit_summary_features() : true;
uint32_t num_ok(0);
for (uint32_t docId : _docsumState._docsumbuf) {
if (_request.expired() ) { break; }
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp
index 90850007467..a62bd155b87 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp
@@ -3,6 +3,7 @@
#include "documentstoreadapter.h"
#include <vespa/searchsummary/docsummary/docsum_store_document.h>
#include <vespa/searchsummary/docsummary/summaryfieldconverter.h>
+#include <vespa/document/fieldvalue/document.h>
#include <vespa/document/fieldvalue/stringfieldvalue.h>
#include <vespa/eval/eval/value_codec.h>
#include <vespa/vespalib/objects/nbostream.h>
@@ -24,18 +25,9 @@ const vespalib::string DOCUMENT_ID_FIELD("documentid");
DocumentStoreAdapter::
DocumentStoreAdapter(const search::IDocumentStore & docStore,
- const DocumentTypeRepo &repo,
- const ResultConfig & resultConfig,
- const vespalib::string & resultClassName,
- const FieldCache::CSP & fieldCache,
- const std::set<vespalib::string> &markupFields)
+ const DocumentTypeRepo &repo)
: _docStore(docStore),
- _repo(repo),
- _resultConfig(resultConfig),
- _resultClass(resultConfig.
- LookupResultClass(resultConfig.LookupResultClassId(resultClassName.c_str()))),
- _fieldCache(fieldCache),
- _markupFields(markupFields)
+ _repo(repo)
{
}
@@ -44,7 +36,7 @@ DocumentStoreAdapter::~DocumentStoreAdapter() = default;
std::unique_ptr<const IDocsumStoreDocument>
DocumentStoreAdapter::getMappedDocsum(uint32_t docId)
{
- Document::UP document = _docStore.read(docId, _repo);
+ auto document = _docStore.read(docId, _repo);
if ( ! document) {
LOG(debug, "Did not find summary document for docId %u. Returning empty docsum", docId);
return {};
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h
index 7a3a810bb55..4d77e8c8705 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h
@@ -2,10 +2,7 @@
#pragma once
-#include "fieldcache.h"
#include <vespa/searchsummary/docsummary/docsumstore.h>
-#include <vespa/searchsummary/docsummary/resultconfig.h>
-#include <vespa/document/fieldvalue/document.h>
#include <vespa/searchlib/docstore/idocumentstore.h>
namespace proton {
@@ -15,28 +12,14 @@ class DocumentStoreAdapter : public search::docsummary::IDocsumStore
private:
const search::IDocumentStore & _docStore;
const document::DocumentTypeRepo & _repo;
- const search::docsummary::ResultConfig & _resultConfig;
- const search::docsummary::ResultClass * _resultClass;
- FieldCache::CSP _fieldCache;
- const std::set<vespalib::string> & _markupFields;
public:
DocumentStoreAdapter(const search::IDocumentStore &docStore,
- const document::DocumentTypeRepo &repo,
- const search::docsummary::ResultConfig &resultConfig,
- const vespalib::string &resultClassName,
- const FieldCache::CSP &fieldCache,
- const std::set<vespalib::string> &markupFields);
+ const document::DocumentTypeRepo &repo);
~DocumentStoreAdapter();
- const search::docsummary::ResultClass *getResultClass() const {
- return _resultClass;
- }
-
uint32_t getNumDocs() const override { return _docStore.getDocIdLimit(); }
std::unique_ptr<const search::docsummary::IDocsumStoreDocument> getMappedDocsum(uint32_t docId) override;
- uint32_t getSummaryClassId() const override { return _resultClass->GetClassID(); }
-
};
} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.cpp
deleted file mode 100644
index cdf71de2346..00000000000
--- a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "fieldcache.h"
-#include <vespa/document/fieldvalue/document.h>
-#include <vespa/log/log.h>
-LOG_SETUP(".proton.docsummary.fieldcache");
-
-using namespace document;
-using namespace search::docsummary;
-
-namespace proton {
-
-FieldCache::FieldCache() :
- _cache()
-{
-}
-
-FieldCache::FieldCache(const ResultClass &resClass,
- const DocumentType &docType) :
- _cache()
-{
- LOG(debug, "Creating field cache for summary class '%s'", resClass.GetClassName());
- for (uint32_t i = 0; i < resClass.GetNumEntries(); ++i) {
- const ResConfigEntry *entry = resClass.GetEntry(i);
- const vespalib::string fieldName(entry->_bindname);
- if (docType.hasField(fieldName)) {
- const Field &field = docType.getField(fieldName);
- LOG(debug, "Caching Field instance for field '%s': %s.%u",
- fieldName.c_str(), field.getName().data(), field.getId());
- _cache.push_back(std::make_shared<const Field>(field));
- } else {
- _cache.push_back(Field::CSP());
- }
- }
-}
-
-} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.h b/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.h
deleted file mode 100644
index 4cb6b3f8ce8..00000000000
--- a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#pragma once
-
-#include <vespa/document/base/field.h>
-#include <vespa/document/datatype/documenttype.h>
-#include <vespa/searchsummary/docsummary/resultclass.h>
-
-namespace proton {
-
-/**
- * A cache of document::Field instances that is associated
- * with a summary result class.
- **/
-class FieldCache
-{
-private:
- typedef std::vector<document::Field::CSP> Cache;
-
- Cache _cache;
-
-public:
- typedef std::shared_ptr<const FieldCache> CSP;
-
- FieldCache();
-
- FieldCache(const search::docsummary::ResultClass &resClass,
- const document::DocumentType &docType);
-
- size_t size() const { return _cache.size(); }
-
- const document::Field *getField(size_t idx) const {
- return _cache[idx].get();
- }
-};
-
-} // namespace proton
-
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.cpp
deleted file mode 100644
index 84a2379d031..00000000000
--- a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "fieldcacherepo.h"
-
-#include <vespa/log/log.h>
-LOG_SETUP(".proton.docsummary.fieldcacherepo");
-
-using namespace document;
-using namespace search::docsummary;
-
-namespace proton {
-
-FieldCacheRepo::FieldCacheRepo() :
- _repo(),
- _defaultCache(std::make_shared<const FieldCache>())
-{
-}
-
-FieldCacheRepo::FieldCacheRepo(const ResultConfig &resConfig,
- const DocumentType &docType) :
- _repo(),
- _defaultCache(std::make_shared<const FieldCache>())
-{
- for (ResultConfig::const_iterator it(resConfig.begin()), mt(resConfig.end()); it != mt; it++) {
- auto cache = std::make_shared<const FieldCache>(*it, docType);
- vespalib::string className(it->GetClassName());
- LOG(debug, "Adding field cache for summary class '%s' to repo",
- className.c_str());
- _repo.insert(std::make_pair(className, cache));
- }
- const ResultClass *defaultClass = resConfig.LookupResultClass(resConfig.LookupResultClassId(""));
- if (defaultClass != NULL) {
- _defaultCache = getFieldCache(defaultClass->GetClassName());
- }
-}
-
-FieldCache::CSP
-FieldCacheRepo::getFieldCache(const vespalib::string &resultClass) const
-{
- Repo::const_iterator itr = _repo.find(resultClass);
- if (itr != _repo.end()) {
- return itr->second;
- }
- return _defaultCache;
-}
-
-} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.h b/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.h
deleted file mode 100644
index 8844ca0ab46..00000000000
--- a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#pragma once
-
-#include <vespa/document/datatype/documenttype.h>
-#include <vespa/searchsummary/docsummary/resultconfig.h>
-#include "fieldcache.h"
-
-namespace proton {
-
-/**
- * A repository of FieldCache instances,
- * one for each summary result class that we have in the summary result config.
- **/
-class FieldCacheRepo
-{
-private:
- typedef std::map<vespalib::string, FieldCache::CSP> Repo;
-
- Repo _repo;
- FieldCache::CSP _defaultCache; // corresponds to the default summary class
-
-public:
- typedef std::unique_ptr<FieldCacheRepo> UP;
-
- FieldCacheRepo();
-
- FieldCacheRepo(const search::docsummary::ResultConfig &resConfig,
- const document::DocumentType &docType);
-
- FieldCache::CSP getFieldCache(const vespalib::string &resultClass) const;
-
-};
-
-} // namespace proton
-
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h b/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h
index d8df368b13e..bf064a707fe 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h
@@ -35,7 +35,7 @@ public:
virtual search::docsummary::IDocsumWriter &getDocsumWriter() const = 0;
virtual search::docsummary::ResultConfig &getResultConfig() = 0;
- virtual search::docsummary::IDocsumStore::UP createDocsumStore(const vespalib::string &resultClassName) = 0;
+ virtual search::docsummary::IDocsumStore::UP createDocsumStore() = 0;
// Inherit doc from IDocsumEnvironment
virtual search::IAttributeManager *getAttributeManager() override = 0;
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp
index 28a43325e50..ee6911f5c1e 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp
@@ -79,7 +79,7 @@ ShrinkSummaryLidSpaceFlushTarget::initFlush(SerialNum currentSerial, std::shared
}
SummaryManager::SummarySetup::
-SummarySetup(const vespalib::string & baseDir, const DocTypeName & docTypeName, const SummaryConfig & summaryCfg,
+SummarySetup(const vespalib::string & baseDir, const SummaryConfig & summaryCfg,
const SummarymapConfig & summarymapCfg, const JuniperrcConfig & juniperCfg,
search::IAttributeManager::SP attributeMgr, search::IDocumentStore::SP docStore,
std::shared_ptr<const DocumentTypeRepo> repo)
@@ -89,9 +89,7 @@ SummarySetup(const vespalib::string & baseDir, const DocTypeName & docTypeName,
_juniperConfig(),
_attributeMgr(std::move(attributeMgr)),
_docStore(std::move(docStore)),
- _fieldCacheRepo(),
- _repo(repo),
- _markupFields()
+ _repo(repo)
{
auto resultConfig = std::make_unique<ResultConfig>();
if (!resultConfig->ReadConfig(summaryCfg, make_string("SummaryManager(%s)", baseDir.c_str()).c_str())) {
@@ -107,32 +105,12 @@ SummarySetup(const vespalib::string & baseDir, const DocTypeName & docTypeName,
_docsumWriter = std::make_unique<DynamicDocsumWriter>(resultConfig.release(), nullptr);
DynamicDocsumConfig dynCfg(this, _docsumWriter.get());
dynCfg.configure(summarymapCfg);
- for (const auto & o : summarymapCfg.override) {
- if (o.command == "dynamicteaser") {
- vespalib::string markupField = o.arguments;
- if (markupField.empty())
- continue;
- // Assume just one argument: source field that must contain markup
- _markupFields.insert(markupField);
- }
- }
- const DocumentType *docType = repo->getDocumentType(docTypeName.getName());
- if (docType != nullptr) {
- _fieldCacheRepo = std::make_unique<FieldCacheRepo>(getResultConfig(), *docType);
- } else if (getResultConfig().GetNumResultClasses() == 0) {
- LOG(debug, "Create empty field cache repo for document type '%s'", docTypeName.toString().c_str());
- _fieldCacheRepo = std::make_unique<FieldCacheRepo>();
- } else {
- throw IllegalArgumentException(make_string("Did not find document type '%s' in current document type repo."
- " Cannot setup field cache repo for the summary setup",
- docTypeName.toString().c_str()));
- }
}
IDocsumStore::UP
-SummaryManager::SummarySetup::createDocsumStore(const vespalib::string &resultClassName) {
- return std::make_unique<DocumentStoreAdapter>(*_docStore, *_repo, getResultConfig(), resultClassName,
- _fieldCacheRepo->getFieldCache(resultClassName), _markupFields);
+SummaryManager::SummarySetup::createDocsumStore()
+{
+ return std::make_unique<DocumentStoreAdapter>(*_docStore, *_repo);
}
@@ -141,7 +119,7 @@ SummaryManager::createSummarySetup(const SummaryConfig & summaryCfg, const Summa
const JuniperrcConfig & juniperCfg, const std::shared_ptr<const DocumentTypeRepo> &repo,
const search::IAttributeManager::SP &attributeMgr)
{
- return std::make_shared<SummarySetup>(_baseDir, _docTypeName, summaryCfg, summarymapCfg,
+ return std::make_shared<SummarySetup>(_baseDir, summaryCfg, summarymapCfg,
juniperCfg, attributeMgr, _docStore, repo);
}
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h
index ba55761d091..156b44066c6 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h
@@ -2,7 +2,6 @@
#pragma once
#include "isummarymanager.h"
-#include "fieldcacherepo.h"
#include <vespa/searchcore/proton/attribute/attributemanager.h>
#include <vespa/searchcore/proton/common/doctypename.h>
#include <vespa/searchcorespi/flush/iflushtarget.h>
@@ -29,12 +28,9 @@ public:
std::unique_ptr<juniper::Juniper> _juniperConfig;
search::IAttributeManager::SP _attributeMgr;
search::IDocumentStore::SP _docStore;
- FieldCacheRepo::UP _fieldCacheRepo;
const std::shared_ptr<const document::DocumentTypeRepo> _repo;
- std::set<vespalib::string> _markupFields;
public:
SummarySetup(const vespalib::string & baseDir,
- const DocTypeName & docTypeName,
const vespa::config::search::SummaryConfig & summaryCfg,
const vespa::config::search::SummarymapConfig & summarymapCfg,
const vespa::config::search::summary::JuniperrcConfig & juniperCfg,
@@ -45,7 +41,7 @@ public:
search::docsummary::IDocsumWriter & getDocsumWriter() const override { return *_docsumWriter; }
search::docsummary::ResultConfig & getResultConfig() override { return *_docsumWriter->GetResultConfig(); }
- search::docsummary::IDocsumStore::UP createDocsumStore(const vespalib::string &resultClassName) override;
+ search::docsummary::IDocsumStore::UP createDocsumStore() override;
search::IAttributeManager * getAttributeManager() override { return _attributeMgr.get(); }
vespalib::string lookupIndex(const vespalib::string & s) const override { (void) s; return ""; }
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchview.cpp b/searchcore/src/vespa/searchcore/proton/server/searchview.cpp
index 4e051a18de4..d272a0dedf7 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchview.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchview.cpp
@@ -124,7 +124,7 @@ SearchView::getDocsumsInternal(const DocsumRequest & req)
uint64_t startGeneration = readGuard->get().getCurrentGeneration();
convertGidsToLids(req, metaStore, _matchView->getDocIdLimit().get());
- IDocsumStore::UP store(_summarySetup->createDocsumStore(req.resultClassName));
+ IDocsumStore::UP store(_summarySetup->createDocsumStore());
MatchContext::UP mctx = _matchView->createContext();
auto ctx = std::make_unique<DocsumContext>(req, _summarySetup->getDocsumWriter(), *store, _matchView->getMatcher(req.ranking),
mctx->getSearchContext(), mctx->getAttributeContext(),
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
**/
diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
index f6090232b02..8bd416ca716 100644
--- a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
+++ b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
@@ -275,12 +275,6 @@ DocsumFilter::write_flatten_field(const DocsumFieldSpec& field_spec, const Docum
return true;
}
-uint32_t
-DocsumFilter::getSummaryClassId() const
-{
- return _tools->getResultClass() ? _tools->getResultClass()->GetClassID() : ResultConfig::NoClassID();
-}
-
std::unique_ptr<const IDocsumStoreDocument>
DocsumFilter::getMappedDocsum(uint32_t id)
{
diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h
index 17a85f142c8..f143c91d962 100644
--- a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h
+++ b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h
@@ -81,7 +81,6 @@ public:
// Inherit doc from IDocsumStore
std::unique_ptr<const search::docsummary::IDocsumStoreDocument> getMappedDocsum(uint32_t id) override;
uint32_t getNumDocs() const override;
- uint32_t getSummaryClassId() const override;
search::docsummary::DocsumStoreFieldValue get_summary_field(uint32_t entry_idx, const Document& doc);
void insert_summary_field(uint32_t entry_idx, const Document& doc, vespalib::slime::Inserter& inserter);