diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-03-21 13:04:38 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-03-21 13:04:38 +0100 |
commit | 7b4a9f31c6ae8eeb2795c8794dc130dc35460b6a (patch) | |
tree | 0073dd78ee8d50f44d67ed67392288c497fa5948 | |
parent | e0fc11519ed0f7964d116ef6a85e203425c3501a (diff) |
Remove StorageDocument::LP
6 files changed, 41 insertions, 41 deletions
diff --git a/streamingvisitors/src/tests/hitcollector/hitcollector.cpp b/streamingvisitors/src/tests/hitcollector/hitcollector.cpp index 4967c3c7759..8105da3d0c8 100644 --- a/streamingvisitors/src/tests/hitcollector/hitcollector.cpp +++ b/streamingvisitors/src/tests/hitcollector/hitcollector.cpp @@ -29,6 +29,7 @@ private: void testFeatureSet(); DocumentType _docType; + std::vector<vsm::StorageDocument::UP> _backedHits; public: HitCollectorTest(); @@ -62,10 +63,11 @@ void HitCollectorTest::addHit(HitCollector &hc, uint32_t docId, double score, const char *sortData, size_t sortDataSize) { document::Document::UP doc(new document::Document(_docType, DocumentId("doc::"))); - StorageDocument::LP sdoc(new StorageDocument(std::move(doc), SharedFieldPathMap(), 0)); + StorageDocument::UP sdoc(new StorageDocument(std::move(doc), SharedFieldPathMap(), 0)); ASSERT_TRUE(sdoc->valid()); MatchData md(MatchData::params()); - hc.addHit(sdoc, docId, md, score, sortData, sortDataSize); + hc.addHit(sdoc.get(), docId, md, score, sortData, sortDataSize); + _backedHits.push_back(std::move(sdoc)); } void diff --git a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp index c07b46cf5ef..8002f00f540 100644 --- a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp @@ -12,11 +12,11 @@ using vdslib::SearchResult; namespace storage { -HitCollector::Hit::Hit(const vsm::StorageDocument::LP & doc, uint32_t docId, const search::fef::MatchData & matchData, +HitCollector::Hit::Hit(const vsm::StorageDocument * doc, uint32_t docId, const search::fef::MatchData & matchData, double score, const void * sortData, size_t sortDataLen) : _docid(docId), _score(score), - _document(doc), + _document(std::move(doc)), _matchData(), _sortBlob(sortData, sortDataLen) { @@ -38,22 +38,22 @@ HitCollector::HitCollector(size_t wantedHits) : const vsm::Document & HitCollector::getDocSum(const search::DocumentIdT & docId) const { - for (HitVector::const_iterator it(_hits.begin()), mt(_hits.end()); it < mt; it++) { - if (docId == it->getDocId()) { - return *it->getDocument(); + for (const Hit & hit : _hits) { + if (docId == hit.getDocId()) { + return hit.getDocument(); } } throw std::runtime_error(vespalib::make_string("Could not look up document id %d", docId)); } bool -HitCollector::addHit(const vsm::StorageDocument::LP & doc, uint32_t docId, const search::fef::MatchData & data, double score) +HitCollector::addHit(const vsm::StorageDocument * doc, uint32_t docId, const search::fef::MatchData & data, double score) { return addHit(Hit(doc, docId, data, score)); } bool -HitCollector::addHit(const vsm::StorageDocument::LP & doc, uint32_t docId, const search::fef::MatchData & data, +HitCollector::addHit(const vsm::StorageDocument * doc, uint32_t docId, const search::fef::MatchData & data, double score, const void * sortData, size_t sortDataLen) { return addHit(Hit(doc, docId, data, score, sortData, sortDataLen)); @@ -123,7 +123,7 @@ HitCollector::fillSearchResult(vdslib::SearchResult & searchResult) { sortByDocId(); for (const Hit & hit : _hits) { - vespalib::string documentId(hit.getDocument()->docDoc().getId().toString()); + vespalib::string documentId(hit.getDocument().docDoc().getId().toString()); search::DocumentIdT docId = hit.getDocId(); SearchResult::RankType rank = hit.getRankScore(); diff --git a/streamingvisitors/src/vespa/searchvisitor/hitcollector.h b/streamingvisitors/src/vespa/searchvisitor/hitcollector.h index 035c2c9876d..b8b35f992fc 100644 --- a/streamingvisitors/src/vespa/searchvisitor/hitcollector.h +++ b/streamingvisitors/src/vespa/searchvisitor/hitcollector.h @@ -22,9 +22,9 @@ private: class Hit { public: - Hit(const vsm::StorageDocument::LP & doc, uint32_t docId, const search::fef::MatchData & matchData, + Hit(const vsm::StorageDocument * doc, uint32_t docId, const search::fef::MatchData & matchData, double score, const void * sortData, size_t sortDataLen); - Hit(const vsm::StorageDocument::LP & doc, uint32_t docId, const search::fef::MatchData & matchData, double score) + Hit(const vsm::StorageDocument * doc, uint32_t docId, const search::fef::MatchData & matchData, double score) : Hit(doc, docId, matchData, score, nullptr, 0) { } ~Hit(); @@ -33,7 +33,7 @@ private: Hit(Hit && rhs) = default; Hit & operator = (Hit && rhs) = default; search::DocumentIdT getDocId() const { return _docid; } - const vsm::StorageDocument::LP & getDocument() const { return _document; } + const vsm::StorageDocument & getDocument() const { return *_document; } const std::vector<search::fef::TermFieldMatchData> &getMatchData() const { return _matchData; } search::feature_t getRankScore() const { return _score; } const vespalib::string & getSortBlob() const { return _sortBlob; } @@ -65,7 +65,7 @@ private: private: uint32_t _docid; double _score; - vsm::StorageDocument::LP _document; + const vsm::StorageDocument * _document; std::vector<search::fef::TermFieldMatchData> _matchData; vespalib::string _sortBlob; }; @@ -99,7 +99,7 @@ public: * @param data The match data for the hit. * @return true if the document was added to the heap **/ - bool addHit(const vsm::StorageDocument::LP & doc, uint32_t docId, const search::fef::MatchData & data, double score); + bool addHit(const vsm::StorageDocument * doc, uint32_t docId, const search::fef::MatchData & data, double score); /** * Adds a hit to this hit collector. @@ -113,7 +113,7 @@ public: * @param sortDataLen The length of the sortdata. * @return true if the document was added to the heap **/ - bool addHit(const vsm::StorageDocument::LP & doc, uint32_t docId, const search::fef::MatchData & data, + bool addHit(const vsm::StorageDocument * doc, uint32_t docId, const search::fef::MatchData & data, double score, const void * sortData, size_t sortDataLen); /** diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp index e83ec55b93f..70adaa682e5 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp @@ -292,7 +292,6 @@ void SearchVisitor::init(const Parameters & params) VISITOR_TRACE(9, vespalib::make_string("Setting up for query blob of %zu bytes", queryBlob.size())); QueryTermDataFactory addOnFactory; _query = search::Query(addOnFactory, search::QueryPacketT(queryBlob.data(), queryBlob.size())); - LOG(debug, "Query tree: '%s'", _query.asString().c_str()); _searchBuffer->reserve(0x10000); int stackCount = 0; @@ -534,7 +533,7 @@ bool SearchVisitor::RankController::collectMatchedDocument(bool hasSorting, SearchVisitor & visitor, const std::vector<char> & tmpSortBuffer, - const StorageDocument::LP & document) + const StorageDocument * document) { bool amongTheBest(false); uint32_t docId = _rankProcessor->getDocId(); @@ -542,7 +541,7 @@ SearchVisitor::RankController::collectMatchedDocument(bool hasSorting, amongTheBest = _rankProcessor->getHitCollector().addHit(document, docId, _rankProcessor->getMatchData(), _rankProcessor->getRankScore()); if (amongTheBest && _dumpFeatures) { - _dumpProcessor->getHitCollector().addHit(StorageDocument::LP(NULL), docId, _dumpProcessor->getMatchData(), _dumpProcessor->getRankScore()); + _dumpProcessor->getHitCollector().addHit(nullptr, docId, _dumpProcessor->getMatchData(), _dumpProcessor->getRankScore()); } } else { size_t pos = visitor.fillSortBuffer(); @@ -550,7 +549,7 @@ SearchVisitor::RankController::collectMatchedDocument(bool hasSorting, amongTheBest = _rankProcessor->getHitCollector().addHit(document, docId, _rankProcessor->getMatchData(), _rankProcessor->getRankScore(), &tmpSortBuffer[0], pos); if (amongTheBest && _dumpFeatures) { - _dumpProcessor->getHitCollector().addHit(StorageDocument::LP(NULL), docId, _dumpProcessor->getMatchData(), + _dumpProcessor->getHitCollector().addHit(nullptr, docId, _dumpProcessor->getMatchData(), _dumpProcessor->getRankScore(), &tmpSortBuffer[0], pos); } } @@ -885,7 +884,7 @@ SearchVisitor::handleDocuments(const document::BucketId&, const document::DocumentType* defaultDocType = _docTypeMapping.getDefaultDocumentType(); assert(defaultDocType); for (const auto & entry : entries) { - StorageDocument::LP document(new StorageDocument(entry->releaseDocument(), _fieldPathMap, highestFieldNo)); + StorageDocument::UP document(new StorageDocument(entry->releaseDocument(), _fieldPathMap, highestFieldNo)); try { if (defaultDocType != NULL @@ -894,8 +893,8 @@ SearchVisitor::handleDocuments(const document::BucketId&, LOG(debug, "Skipping document of type '%s' when handling only documents of type '%s'", document->docDoc().getType().getName().c_str(), defaultDocType->getName().c_str()); } else { - if (handleDocument(document)) { - _backingDocuments.push_back(document); + if (handleDocument(*document)) { + _backingDocuments.push_back(std::move(document)); } } } catch (const std::exception & e) { @@ -906,19 +905,19 @@ SearchVisitor::handleDocuments(const document::BucketId&, } bool -SearchVisitor::handleDocument(const StorageDocument::LP & document) +SearchVisitor::handleDocument(StorageDocument & document) { bool needToKeepDocument(false); - _syntheticFieldsController.onDocument(*document); - group(document->docDoc(), 0, true); - if (match(*document)) { + _syntheticFieldsController.onDocument(document); + group(document.docDoc(), 0, true); + if (match(document)) { RankProcessor & rp = *_rankController.getRankProcessor(); - vespalib::string documentId(document->docDoc().getId().getScheme().toString()); + vespalib::string documentId(document.docDoc().getId().getScheme().toString()); LOG(debug, "Matched document with id '%s'", documentId.c_str()); - document->setDocId(rp.getDocId()); + document.setDocId(rp.getDocId()); - fillAttributeVectors(documentId, *document); + fillAttributeVectors(documentId, document); _rankController.rankMatchedDocument(rp.getDocId()); @@ -928,16 +927,16 @@ SearchVisitor::handleDocument(const StorageDocument::LP & document) if (_rankController.keepMatchedDocument()) { - bool amongTheBest = _rankController.collectMatchedDocument(!_sortList.empty(), *this, _tmpSortBuffer, document); + bool amongTheBest = _rankController.collectMatchedDocument(!_sortList.empty(), *this, _tmpSortBuffer, &document); - _syntheticFieldsController.onDocumentMatch(*document, documentId); + _syntheticFieldsController.onDocumentMatch(document, documentId); - SingleDocumentStore single(*document); + SingleDocumentStore single(document); _summaryGenerator.setDocsumCache(single); - group(document->docDoc(), rp.getRankScore(), false); + group(document.docDoc(), rp.getRankScore(), false); if (amongTheBest) { - document->saveCachedFields(); + document.saveCachedFields(); needToKeepDocument = true; } @@ -949,7 +948,7 @@ SearchVisitor::handleDocument(const StorageDocument::LP & document) _rankController.getRankSetup()->getRankScoreDropLimit()); } } else { - LOG(debug, "Did not match document with id '%s'", document->docDoc().getId().getScheme().toString().c_str()); + LOG(debug, "Did not match document with id '%s'", document.docDoc().getId().getScheme().toString().c_str()); } return needToKeepDocument; } diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h index e8de5f85e5a..b6240fb5d8c 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h @@ -190,7 +190,7 @@ private: bool collectMatchedDocument(bool hasSorting, SearchVisitor & visitor, const std::vector<char> & tmpSortBuffer, - const vsm::StorageDocument::LP & documentId); + const vsm::StorageDocument * documentId); /** * Callback function that is called when visiting is completed. * Perform second phase ranking and calculate summary features / rank features if asked for. @@ -309,7 +309,7 @@ private: * @param document Document to process. * @return true if the underlying buffer is needed later on, then it must be kept. */ - bool handleDocument(const vsm::StorageDocument::LP & document); + bool handleDocument(vsm::StorageDocument & document); /** * Collect the given document for grouping. @@ -381,7 +381,7 @@ private: size_t _limit; }; typedef std::vector< GroupingEntry > GroupingList; - typedef std::vector<vsm::StorageDocument::LP> DocumentVector; + typedef std::vector<vsm::StorageDocument::UP> DocumentVector; class SummaryGenerator : public HitsAggregationResult::SummaryGenerator { diff --git a/vsm/src/vespa/vsm/common/storagedocument.h b/vsm/src/vespa/vsm/common/storagedocument.h index 688d1d9d0f8..003c827b80f 100644 --- a/vsm/src/vespa/vsm/common/storagedocument.h +++ b/vsm/src/vespa/vsm/common/storagedocument.h @@ -3,7 +3,6 @@ #include "document.h" #include <vespa/document/fieldvalue/document.h> -#include <vespa/vespalib/util/linkedptr.h> namespace vsm { @@ -14,7 +13,7 @@ typedef std::shared_ptr<FieldPathMapT> SharedFieldPathMap; class StorageDocument : public Document { public: - typedef vespalib::LinkedPtr<StorageDocument> LP; + typedef std::unique_ptr<StorageDocument> UP; class SubDocument { public: |