aboutsummaryrefslogtreecommitdiffstats
path: root/streamingvisitors
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-09-19 21:51:54 +0200
committerGitHub <noreply@github.com>2017-09-19 21:51:54 +0200
commitd650e313d11cfe0f2f4ce07f5fc8cf616a264739 (patch)
treebdece4b85a956fe44701d6339241e15272459508 /streamingvisitors
parentc536a7dedb8257d9a56fb350bf24b796e26712e8 (diff)
Revert "Havardpe/reuse termwise vector in second phase"
Diffstat (limited to 'streamingvisitors')
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp15
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankprocessor.h3
2 files changed, 8 insertions, 10 deletions
diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp
index dc9cfdc7efd..f0c2a8d4cc9 100644
--- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp
@@ -89,7 +89,6 @@ RankProcessor::initQueryEnvironment()
terms[i].getTerm()->index().c_str(), terms[i].getTerm()->getTerm());
}
}
- _match_data = _mdLayout.createMatchData();
}
void
@@ -101,7 +100,7 @@ RankProcessor::initHitCollector(size_t wantedHitCount)
void
RankProcessor::setupRankProgram(RankProgram &program)
{
- program.setup(*_match_data, _queryEnv, search::fef::Properties());
+ program.setup(_mdLayout, _queryEnv, search::fef::Properties());
}
void
@@ -138,7 +137,6 @@ RankProcessor::RankProcessor(RankManager::Snapshot::SP snapshot,
_query(query),
_queryEnv(location, snapshot->getIndexEnvironment(rankProfile), queryProperties, attrMgr),
_mdLayout(),
- _match_data(),
_rankProgram(),
_docId(TermFieldMatchData::invalidId()),
_score(0.0),
@@ -184,13 +182,13 @@ copyTermFieldMatchData(const std::vector<search::fef::TermFieldMatchData> &src,
class RankProgramWrapper : public HitCollector::IRankProgram
{
private:
- MatchData &_match_data;
+ RankProgram &_rankProgram;
public:
- RankProgramWrapper(MatchData &match_data) : _match_data(match_data) {}
+ RankProgramWrapper(RankProgram &rankProgram) : _rankProgram(rankProgram) {}
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, _match_data);
+ copyTermFieldMatchData(matchData, _rankProgram.match_data());
(void) docid;
}
};
@@ -204,7 +202,7 @@ RankProcessor::calculateFeatureSet()
RankProgram &rankProgram = *(_summaryProgram.get() != nullptr ? _summaryProgram : _rankProgram);
search::fef::FeatureResolver resolver(rankProgram.get_seeds());
LOG(debug, "Feature handles: numNames(%ld)", resolver.num_features());
- RankProgramWrapper wrapper(*_match_data);
+ RankProgramWrapper wrapper(rankProgram);
FeatureSet::SP sf = _hitCollector->getFeatureSet(wrapper, resolver);
LOG(debug, "Feature set: numFeatures(%u), numDocs(%u)", sf->numFeatures(), sf->numDocs());
return sf;
@@ -219,8 +217,9 @@ RankProcessor::fillSearchResult(vdslib::SearchResult & searchResult)
void
RankProcessor::unpackMatchData(uint32_t docId)
{
+ MatchData &matchData = _rankProgram->match_data();
_docId = docId;
- unpackMatchData(*_match_data);
+ unpackMatchData(matchData);
}
void
diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h
index bab63c36522..f1fb917afcf 100644
--- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h
+++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h
@@ -29,7 +29,6 @@ private:
QueryEnvironment _queryEnv;
search::fef::MatchDataLayout _mdLayout;
- search::fef::MatchData::UP _match_data;
search::fef::RankProgram::UP _rankProgram;
uint32_t _docId;
double _score;
@@ -68,7 +67,7 @@ public:
void runRankProgram(uint32_t docId);
search::FeatureSet::SP calculateFeatureSet();
void fillSearchResult(vdslib::SearchResult & searchResult);
- const search::fef::MatchData &getMatchData() const { return *_match_data; }
+ const search::fef::MatchData &getMatchData() const { return _rankProgram->match_data(); }
void setRankScore(double score) { _score = score; }
double getRankScore() const { return _score; }
HitCollector & getHitCollector() { return *_hitCollector; }