summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2022-09-21 09:51:28 +0000
committerGeir Storli <geirst@yahooinc.com>2022-09-21 11:52:23 +0000
commit034ec90d9277634618454f827ed5095135e1e1ca (patch)
treee8bbca2a1c38fbb6ef73b7f41faf88452e6553c9
parent04b195343586990e6a612d33e98c7fa8603ee0f4 (diff)
Cleanup IDocsumStore and IDocsumWriter interfaces.
-rw-r--r--searchcore/src/tests/proton/docsummary/docsummary.cpp20
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h3
-rw-r--r--searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp5
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h20
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp4
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h7
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h6
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp2
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp8
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h3
12 files changed, 31 insertions, 51 deletions
diff --git a/searchcore/src/tests/proton/docsummary/docsummary.cpp b/searchcore/src/tests/proton/docsummary/docsummary.cpp
index d6491ddd427..c53cafe0570 100644
--- a/searchcore/src/tests/proton/docsummary/docsummary.cpp
+++ b/searchcore/src/tests/proton/docsummary/docsummary.cpp
@@ -399,7 +399,7 @@ bool
assertString(const std::string & exp, const std::string & fieldName,
DocumentStoreAdapter &dsa, uint32_t id)
{
- auto res = dsa.getMappedDocsum(id);
+ auto res = dsa.get_document(id);
return EXPECT_EQUAL(exp, res->get_field_value(fieldName)->getAsString());
}
@@ -407,7 +407,7 @@ bool
assertAnnotatedString(const std::string & exp, const std::string & fieldName,
DocumentStoreAdapter &dsa, uint32_t id)
{
- auto res = dsa.getMappedDocsum(id);
+ auto res = dsa.get_document(id);
MockJuniperConverter converter;
vespalib::Slime slime;
vespalib::slime::SlimeInserter inserter(slime);
@@ -478,7 +478,7 @@ TEST_F("requireThatAdapterHandlesAllFieldTypes", Fixture)
bc.put_document(0, std::move(doc));
DocumentStoreAdapter dsa(bc._str, bc.get_repo());
- auto res = dsa.getMappedDocsum(0);
+ auto res = dsa.get_document(0);
EXPECT_EQUAL(-1, res->get_field_value("a")->getAsInt());
EXPECT_EQUAL(32767, res->get_field_value("b")->getAsInt());
EXPECT_EQUAL(2147483647, res->get_field_value("c")->getAsInt());
@@ -505,19 +505,19 @@ TEST_F("requireThatAdapterHandlesMultipleDocuments", Fixture)
DocumentStoreAdapter dsa(bc._str, bc.get_repo());
{ // doc 0
- auto res = dsa.getMappedDocsum(0);
+ auto res = dsa.get_document(0);
EXPECT_EQUAL(1000, res->get_field_value("a")->getAsInt());
}
{ // doc 1
- auto res = dsa.getMappedDocsum(1);
+ auto res = dsa.get_document(1);
EXPECT_EQUAL(2000, res->get_field_value("a")->getAsInt());
}
{ // doc 2
- auto res = dsa.getMappedDocsum(2);
+ auto res = dsa.get_document(2);
EXPECT_TRUE(!res);
}
{ // doc 0 (again)
- auto res = dsa.getMappedDocsum(0);
+ auto res = dsa.get_document(0);
EXPECT_EQUAL(1000, res->get_field_value("a")->getAsInt());
}
EXPECT_EQUAL(0u, bc._str.lastSyncToken());
@@ -531,7 +531,7 @@ TEST_F("requireThatAdapterHandlesDocumentIdField", Fixture)
auto doc = bc.make_document("id:ns:searchdocument::0");
bc.put_document(0, std::move(doc));
DocumentStoreAdapter dsa(bc._str, bc.get_repo());
- auto res = dsa.getMappedDocsum(0);
+ auto res = dsa.get_document(0);
vespalib::Slime slime;
vespalib::slime::SlimeInserter inserter(slime);
res->insert_document_id(inserter);
@@ -865,7 +865,7 @@ TEST_F("requireThatUrisAreUsed", Fixture)
EXPECT_EQUAL(exp->getType(), act->getType());
DocumentStoreAdapter dsa(store, *bc._repo);
- auto res = dsa.getMappedDocsum(1);
+ auto res = dsa.get_document(1);
{
vespalib::Slime slime;
vespalib::slime::SlimeInserter inserter(slime);
@@ -984,7 +984,7 @@ TEST_F("requireThatRawFieldsWorks", Fixture)
ASSERT_TRUE(assertString(raw1s, "i", dsa, 1));
- auto res = dsa.getMappedDocsum(1);
+ auto res = dsa.get_document(1);
{
vespalib::Slime slime;
vespalib::slime::SlimeInserter inserter(slime);
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
index 6c7f23166a7..1db172848db 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
@@ -86,7 +86,7 @@ DocsumContext::createSlimeReply()
Cursor &docSumC = array.addObject();
ObjectSymbolInserter inserter(docSumC, docsumSym);
if ((docId != search::endDocId) && rci.res_class != nullptr) {
- _docsumWriter.insertDocsum(rci, docId, _docsumState, &_docsumStore, inserter);
+ _docsumWriter.insertDocsum(rci, docId, _docsumState, _docsumStore, inserter);
}
num_ok++;
}
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp
index 6d717f7f128..0b10803e10d 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp
@@ -33,7 +33,7 @@ DocumentStoreAdapter(const search::IDocumentStore & docStore,
DocumentStoreAdapter::~DocumentStoreAdapter() = default;
std::unique_ptr<const IDocsumStoreDocument>
-DocumentStoreAdapter::getMappedDocsum(uint32_t docId)
+DocumentStoreAdapter::get_document(uint32_t docId)
{
auto document = _docStore.read(docId, _repo);
if ( ! document) {
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h
index 4d77e8c8705..f87987f273b 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h
@@ -18,8 +18,7 @@ public:
const document::DocumentTypeRepo &repo);
~DocumentStoreAdapter();
- uint32_t getNumDocs() const override { return _docStore.getDocIdLimit(); }
- std::unique_ptr<const search::docsummary::IDocsumStoreDocument> getMappedDocsum(uint32_t docId) override;
+ std::unique_ptr<const search::docsummary::IDocsumStoreDocument> get_document(uint32_t docId) override;
};
} // namespace proton
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 fda4923a826..9808f46d668 100644
--- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
+++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
@@ -56,13 +56,12 @@ struct SlimeSummaryTest : testing::Test, IDocsumStore, GetDocsumsStateCallback {
Slime slimeOut;
SlimeInserter inserter(slimeOut);
auto rci = writer->resolveClassInfo(state._args.getResultClassName(), {});
- writer->insertDocsum(rci, 1u, state, this, inserter);
+ writer->insertDocsum(rci, 1u, state, *this, inserter);
vespalib::SmartBuffer buf(4_Ki);
BinaryFormat::encode(slimeOut, buf);
EXPECT_GT(BinaryFormat::decode(buf.obtain(), slime), 0u);
}
- uint32_t getNumDocs() const override { return 2; }
- std::unique_ptr<const IDocsumStoreDocument> getMappedDocsum(uint32_t docid) override {
+ std::unique_ptr<const IDocsumStoreDocument> get_document(uint32_t docid) override {
EXPECT_EQ(1u, docid);
if (fail_get_mapped_docsum) {
return {};
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h
index 7f3a88b05eb..22bf516caaa 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h
@@ -9,33 +9,19 @@ namespace search::docsummary {
class IDocsumStoreDocument;
/**
- * Interface for object able to fetch docsum blobs based on local
- * document id.
+ * Interface used to fetch docsum specific abstract of documents based on local document id.
**/
class IDocsumStore
{
public:
using UP = std::unique_ptr<IDocsumStore>;
- /**
- * Destructor. No cleanup needed for base class.
- */
virtual ~IDocsumStore() = default;
/**
- * @return total number of documents.
- **/
- virtual uint32_t getNumDocs() const = 0;
-
- /**
- * Get a reference to a docsum blob in memory. The docsum store
- * owns the memory (which is either mmap()ed or from a memory-based
- * index of some kind).
- *
- * @return unique pointer to interface class providing access to document
- * @param docid local document id
+ * Get a docsum specific abstract of the document for the given local document id.
**/
- virtual std::unique_ptr<const IDocsumStoreDocument> getMappedDocsum(uint32_t docid) = 0;
+ virtual std::unique_ptr<const IDocsumStoreDocument> get_document(uint32_t docid) = 0;
};
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
index 62112af7e3e..c31c463f287 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
@@ -39,7 +39,7 @@ DynamicDocsumWriter::resolveClassInfo(vespalib::stringref class_name,
void
DynamicDocsumWriter::insertDocsum(const ResolveClassInfo & rci, uint32_t docid, GetDocsumsState& state,
- IDocsumStore *docinfos, Inserter& topInserter)
+ IDocsumStore &docinfos, Inserter& topInserter)
{
if (rci.res_class == nullptr) {
// Use empty docsum when illegal docsum class has been requested
@@ -59,7 +59,7 @@ DynamicDocsumWriter::insertDocsum(const ResolveClassInfo & rci, uint32_t docid,
}
} else {
// look up docsum entry
- auto doc = docinfos->getMappedDocsum(docid);
+ auto doc = docinfos.get_document(docid);
if (!doc) {
return; // Use empty docsum when document is gone
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
index b3cc12cfd25..b7e21056dba 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
@@ -21,6 +21,9 @@ class KeywordExtractor;
static constexpr uint32_t SLIME_MAGIC_ID = 0x55555555;
+/**
+ * Interface for writing a docsum payload (in Slime) for a given document.
+ */
class IDocsumWriter
{
public:
@@ -37,7 +40,7 @@ public:
virtual ~IDocsumWriter() = default;
virtual void InitState(const search::IAttributeManager & attrMan, GetDocsumsState& state, const ResolveClassInfo& rci) = 0;
virtual void insertDocsum(const ResolveClassInfo & rci, uint32_t docid, GetDocsumsState& state,
- IDocsumStore *docinfos, Inserter & target) = 0;
+ IDocsumStore &docinfos, Inserter & target) = 0;
virtual ResolveClassInfo resolveClassInfo(vespalib::stringref class_name,
const vespalib::hash_set<vespalib::string>& fields) const = 0;
};
@@ -60,7 +63,7 @@ public:
void InitState(const search::IAttributeManager & attrMan, GetDocsumsState& state, const ResolveClassInfo& rci) override;
void insertDocsum(const ResolveClassInfo & outputClassInfo, uint32_t docid, GetDocsumsState& state,
- IDocsumStore *docinfos, Inserter & inserter) override;
+ IDocsumStore &docinfos, Inserter & inserter) override;
ResolveClassInfo resolveClassInfo(vespalib::stringref class_name,
const vespalib::hash_set<vespalib::string>& fields) const override;
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h b/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h
index 7d38ae18f37..32e1b07a838 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h
@@ -12,9 +12,9 @@ namespace search::docsummary {
class IJuniperConverter;
/**
- * Interface class providing access to a document retrieved from an
- * IDocsumStore. Some implementations (e.g. DocsumStoreVsmDocument) might
- * apply transforms when accessing some fields.
+ * Interface class providing access to a document retrieved from an IDocsumStore.
+ *
+ * Some implementations (e.g. DocsumStoreVsmDocument) might apply transforms when accessing some fields.
**/
class IDocsumStoreDocument
{
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
index 205bf54ce5e..4b64b7ab45b 100644
--- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
@@ -175,7 +175,7 @@ SearchVisitor::SummaryGenerator::fillSummary(AttributeVector::DocId lid, const H
vespalib::Slime slime;
vespalib::slime::SlimeInserter inserter(slime);
auto& sds = get_streaming_docsums_state(summaryClass);
- _docsumWriter->insertDocsum(sds.get_resolve_class_info(), lid, sds.get_state(), _docsumFilter.get(), inserter);
+ _docsumWriter->insertDocsum(sds.get_resolve_class_info(), lid, sds.get_state(), *_docsumFilter, inserter);
_buf.reset();
vespalib::WritableMemory magicId = _buf.reserve(4);
memcpy(magicId.data, &search::docsummary::SLIME_MAGIC_ID, 4);
diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
index e0ed3f6c5e4..aa9c9bd860b 100644
--- a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
+++ b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
@@ -338,12 +338,6 @@ void DocsumFilter::init(const FieldMap & fieldMap, const FieldPathMapT & fieldPa
}
}
-uint32_t
-DocsumFilter::getNumDocs() const
-{
- return std::numeric_limits<uint32_t>::max();
-}
-
bool
DocsumFilter::write_flatten_field(const DocsumFieldSpec& field_spec, const Document& doc)
{
@@ -379,7 +373,7 @@ DocsumFilter::write_flatten_field(const DocsumFieldSpec& field_spec, const Docum
}
std::unique_ptr<const IDocsumStoreDocument>
-DocsumFilter::getMappedDocsum(uint32_t id)
+DocsumFilter::get_document(uint32_t id)
{
const ResultClass *resClass = _tools->getResultClass();
if (resClass == nullptr) {
diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h
index cb6ae66ae22..d7f6d88bd0c 100644
--- a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h
+++ b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h
@@ -66,8 +66,7 @@ public:
void setDocSumStore(const IDocSumCache & docsumCache) { _docsumCache = &docsumCache; }
// Inherit doc from IDocsumStore
- std::unique_ptr<const search::docsummary::IDocsumStoreDocument> getMappedDocsum(uint32_t id) override;
- uint32_t getNumDocs() const override;
+ std::unique_ptr<const search::docsummary::IDocsumStoreDocument> get_document(uint32_t id) 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);