diff options
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); |