summaryrefslogtreecommitdiffstats
path: root/streamingvisitors
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-03-21 13:04:38 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-03-21 13:04:38 +0100
commit7b4a9f31c6ae8eeb2795c8794dc130dc35460b6a (patch)
tree0073dd78ee8d50f44d67ed67392288c497fa5948 /streamingvisitors
parente0fc11519ed0f7964d116ef6a85e203425c3501a (diff)
Remove StorageDocument::LP
Diffstat (limited to 'streamingvisitors')
-rw-r--r--streamingvisitors/src/tests/hitcollector/hitcollector.cpp6
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp16
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/hitcollector.h12
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp39
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.h6
5 files changed, 40 insertions, 39 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
{