diff options
author | Tor Egge <Tor.Egge@yahoo-inc.com> | 2016-12-13 13:50:03 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@yahoo-inc.com> | 2016-12-13 13:50:03 +0000 |
commit | 294ee381b4f1cdd5489e5e6c88acbb2c2045aec3 (patch) | |
tree | 555ae07faa5e2b7c889ad91ed0a79c5cfb620ec6 /streamingvisitors | |
parent | a96055b2c1053c48c76b6d6845027951393dd327 (diff) |
Remove docId from match data.
Diffstat (limited to 'streamingvisitors')
6 files changed, 30 insertions, 30 deletions
diff --git a/streamingvisitors/src/tests/hitcollector/hitcollector.cpp b/streamingvisitors/src/tests/hitcollector/hitcollector.cpp index e362c9f83fe..bed3ae8bc36 100644 --- a/streamingvisitors/src/tests/hitcollector/hitcollector.cpp +++ b/streamingvisitors/src/tests/hitcollector/hitcollector.cpp @@ -71,8 +71,7 @@ HitCollectorTest::addHit(HitCollector &hc, uint32_t docId, double score, const c StorageDocument::SP sdoc(new StorageDocument(std::move(doc))); ASSERT_TRUE(sdoc->valid()); MatchData md(MatchData::params()); - md.setDocId(docId); - hc.addHit(sdoc, md, score, sortData, sortDataSize); + hc.addHit(sdoc, docId, md, score, sortData, sortDataSize); } void @@ -237,11 +236,9 @@ public: _fooValue(), _barValue() {} - virtual const search::fef::MatchData &run(uint32_t docid, const std::vector<search::fef::TermFieldMatchData> &) override { - _matchData.setDocId(docid); + virtual void run(uint32_t docid, const std::vector<search::fef::TermFieldMatchData> &) override { _fooValue.as_number = docid + 10; _barValue.as_number = docid + 30; - return _matchData; } FeatureResolver get_resolver() { diff --git a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp index 09fa3fd5639..6cb49a77ed2 100644 --- a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp @@ -32,17 +32,17 @@ HitCollector::getDocSum(const search::DocumentIdT & docId) const } bool -HitCollector::addHit(const vsm::StorageDocument::SP & doc, const search::fef::MatchData & data, double score) +HitCollector::addHit(const vsm::StorageDocument::SP & doc, uint32_t docId, const search::fef::MatchData & data, double score) { - Hit h(doc, data, score); + Hit h(doc, docId, data, score); return addHit(h); } bool -HitCollector::addHit(const vsm::StorageDocument::SP & doc, const search::fef::MatchData & data, +HitCollector::addHit(const vsm::StorageDocument::SP & doc, uint32_t docId, const search::fef::MatchData & data, double score, const void * sortData, size_t sortDataLen) { - Hit h(doc, data, score, sortData, sortDataLen); + Hit h(doc, docId, data, score, sortData, sortDataLen); return addHit(h); } @@ -139,8 +139,8 @@ HitCollector::getFeatureSet(IRankProgram &rankProgram, } FeatureSet::SP retval = FeatureSet::SP(new FeatureSet(names, _hits.size())); for (HitVector::iterator it(_hits.begin()), mt(_hits.end()); it != mt; ++it) { - const MatchData &matchData = rankProgram.run(it->getDocId(), it->getMatchData()); - uint32_t docId = matchData.getDocId(); + rankProgram.run(it->getDocId(), it->getMatchData()); + uint32_t docId = it->getDocId(); search::feature_t * f = retval->getFeaturesByIndex(retval->addDocId(docId)); for (uint32_t j = 0; j < names.size(); ++j) { f[j] = *resolver.resolve_number(j); diff --git a/streamingvisitors/src/vespa/searchvisitor/hitcollector.h b/streamingvisitors/src/vespa/searchvisitor/hitcollector.h index fc43e748a6d..ea4a20c187b 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::SP & doc, const search::fef::MatchData & matchData, + Hit(const vsm::StorageDocument::SP & doc, uint32_t docId, const search::fef::MatchData & matchData, double score, const void * sortData, size_t sortDataLen) : - _docid(matchData.getDocId()), + _docid(docId), _score(score), _document(doc), _matchData(), @@ -35,8 +35,8 @@ private: _matchData.emplace_back(*matchData.resolveTermField(handle)); } } - Hit(const vsm::StorageDocument::SP & doc, const search::fef::MatchData & matchData, double score) - : Hit(doc, matchData, score, nullptr, 0) {} + Hit(const vsm::StorageDocument::SP & doc, uint32_t docId, const search::fef::MatchData & matchData, double score) + : Hit(doc, docId, matchData, score, nullptr, 0) {} search::DocumentIdT getDocId() const { return _docid; } const vsm::StorageDocument::SP & getDocument() const { return _document; } const std::vector<search::fef::TermFieldMatchData> &getMatchData() const { return _matchData; } @@ -87,7 +87,7 @@ public: struct IRankProgram { virtual ~IRankProgram() {} - virtual const search::fef::MatchData &run(uint32_t docid, const std::vector<search::fef::TermFieldMatchData> &matchData) = 0; + virtual void run(uint32_t docid, const std::vector<search::fef::TermFieldMatchData> &matchData) = 0; }; HitCollector(size_t wantedHits); @@ -104,7 +104,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::SP & doc, const search::fef::MatchData & data, double score); + bool addHit(const vsm::StorageDocument::SP & doc, uint32_t docId, const search::fef::MatchData & data, double score); /** * Adds a hit to this hit collector. @@ -118,7 +118,7 @@ public: * @param sortDataLen The length of the sortdata. * @return true if the document was added to the heap **/ - bool addHit(const vsm::StorageDocument::SP & doc, const search::fef::MatchData & data, + bool addHit(const vsm::StorageDocument::SP & doc, uint32_t docId, const search::fef::MatchData & data, double score, const void * sortData, size_t sortDataLen); /** diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp index d6870d485d5..6a028f15719 100644 --- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp @@ -139,6 +139,7 @@ RankProcessor::RankProcessor(RankManager::Snapshot::SP snapshot, _queryEnv(location, snapshot->getIndexEnvironment(rankProfile), queryProperties, attrMgr), _mdLayout(), _rankProgram(), + _docId(TermFieldMatchData::invalidId()), _score(0.0), _summaryProgram(), _rankScorePtr(nullptr), @@ -188,11 +189,10 @@ private: public: RankProgramWrapper(RankProgram &rankProgram) : _rankProgram(rankProgram) {} - virtual const MatchData &run(uint32_t docid, const std::vector<search::fef::TermFieldMatchData> &matchData) override { + virtual void run(uint32_t docid, const std::vector<search::fef::TermFieldMatchData> &matchData) override { // Prepare the match data object used by the rank program with earlier unpacked match data. copyTermFieldMatchData(matchData, _rankProgram.match_data()); _rankProgram.run(docid); - return _rankProgram.match_data(); } }; @@ -221,7 +221,7 @@ void RankProcessor::unpackMatchData(uint32_t docId) { MatchData &matchData = _rankProgram->match_data(); - matchData.setDocId(docId); + _docId = docId; unpackMatchData(matchData); } @@ -263,8 +263,8 @@ RankProcessor::unpackMatchData(MatchData &matchData) tmd = matchData.resolveTermField(tfd->getHandle()); tmd->setFieldId(fieldId); // reset field match data, but only once per docId - if (tmd->getDocId() != matchData.getDocId()) { - tmd->reset(matchData.getDocId()); + if (tmd->getDocId() != _docId) { + tmd->reset(_docId); } } // find fieldLen for new field diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h index 20dd3f5fb88..04b8e798298 100644 --- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h +++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h @@ -30,6 +30,7 @@ private: QueryEnvironment _queryEnv; search::fef::MatchDataLayout _mdLayout; search::fef::RankProgram::UP _rankProgram; + uint32_t _docId; double _score; search::fef::RankProgram::UP _summaryProgram; const search::feature_t *_rankScorePtr; @@ -69,6 +70,7 @@ public: void setRankScore(double score) { _score = score; } double getRankScore() const { return _score; } HitCollector & getHitCollector() { return *_hitCollector; } + uint32_t getDocId() const { return _docId; } }; } // namespace storage diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp index ff54a506468..cf63c8ef1d1 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp @@ -536,7 +536,7 @@ SearchVisitor::RankController::rankMatchedDocument(uint32_t docId) { _rankProcessor->runRankProgram(docId); LOG(debug, "Rank score for matched document %u: %f", - _rankProcessor->getMatchData().getDocId(), + docId, _rankProcessor->getRankScore()); if (_dumpFeatures) { _dumpProcessor->runRankProgram(docId); @@ -560,18 +560,19 @@ SearchVisitor::RankController::collectMatchedDocument(bool hasSorting, const vsm::StorageDocument::SP & document) { bool amongTheBest(false); + uint32_t docId = _rankProcessor->getDocId(); if (!hasSorting) { - amongTheBest = _rankProcessor->getHitCollector().addHit(document, _rankProcessor->getMatchData(), _rankProcessor->getRankScore()); + amongTheBest = _rankProcessor->getHitCollector().addHit(document, docId, _rankProcessor->getMatchData(), _rankProcessor->getRankScore()); if (amongTheBest && _dumpFeatures) { - _dumpProcessor->getHitCollector().addHit(vsm::StorageDocument::SP(NULL), _dumpProcessor->getMatchData(), _dumpProcessor->getRankScore()); + _dumpProcessor->getHitCollector().addHit(vsm::StorageDocument::SP(NULL), docId, _dumpProcessor->getMatchData(), _dumpProcessor->getRankScore()); } } else { size_t pos = visitor.fillSortBuffer(); LOG(spam, "SortBlob is %ld bytes", pos); - amongTheBest = _rankProcessor->getHitCollector().addHit(document, _rankProcessor->getMatchData(), _rankProcessor->getRankScore(), + amongTheBest = _rankProcessor->getHitCollector().addHit(document, docId, _rankProcessor->getMatchData(), _rankProcessor->getRankScore(), &tmpSortBuffer[0], pos); if (amongTheBest && _dumpFeatures) { - _dumpProcessor->getHitCollector().addHit(vsm::StorageDocument::SP(NULL), _dumpProcessor->getMatchData(), _dumpProcessor->getRankScore(), + _dumpProcessor->getHitCollector().addHit(vsm::StorageDocument::SP(NULL), docId, _dumpProcessor->getMatchData(), _dumpProcessor->getRankScore(), &tmpSortBuffer[0], pos); } } @@ -950,11 +951,11 @@ SearchVisitor::handleDocument(const vsm::StorageDocument::SP & document) vespalib::string documentId(document->docDoc().getId().getScheme().toString()); LOG(debug, "Matched document with id '%s'", documentId.c_str()); - document->setDocId(rp.getMatchData().getDocId()); + document->setDocId(rp.getDocId()); fillAttributeVectors(documentId, *document); - _rankController.rankMatchedDocument(rp.getMatchData().getDocId()); + _rankController.rankMatchedDocument(rp.getDocId()); if (_shouldFillRankAttribute) { _rankAttribute.add(rp.getRankScore()); |