From 5ce267460836efe84c73451ca990280b845976c8 Mon Sep 17 00:00:00 2001 From: Haavard Date: Thu, 23 Feb 2017 16:39:23 +0000 Subject: update with lazy API --- .../src/tests/hitcollector/hitcollector.cpp | 4 ++-- .../src/vespa/searchvisitor/hitcollector.cpp | 2 +- .../src/vespa/searchvisitor/rankprocessor.cpp | 22 ++++++++++------------ .../src/vespa/searchvisitor/rankprocessor.h | 3 ++- 4 files changed, 15 insertions(+), 16 deletions(-) (limited to 'streamingvisitors/src') diff --git a/streamingvisitors/src/tests/hitcollector/hitcollector.cpp b/streamingvisitors/src/tests/hitcollector/hitcollector.cpp index 8c0d2f5ac35..4967c3c7759 100644 --- a/streamingvisitors/src/tests/hitcollector/hitcollector.cpp +++ b/streamingvisitors/src/tests/hitcollector/hitcollector.cpp @@ -235,8 +235,8 @@ public: FeatureResolver get_resolver() { FeatureResolver resolver(2); - resolver.add("foo", &_fooValue, false); - resolver.add("bar", &_barValue, false); + resolver.add("foo", LazyValue(&_fooValue), false); + resolver.add("bar", LazyValue(&_barValue), false); return resolver; } }; diff --git a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp index c4faa87124d..c07b46cf5ef 100644 --- a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp @@ -156,7 +156,7 @@ HitCollector::getFeatureSet(IRankProgram &rankProgram, uint32_t docId = hit.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); + f[j] = resolver.resolve(j).as_number(docId); LOG(debug, "getFeatureSet: lDocId(%u), '%s': %f", docId, names[j].c_str(), f[j]); } } diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp index 03bc5412467..57bf819a7f9 100644 --- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp @@ -40,11 +40,11 @@ getIndexName(const vespalib::string & indexName, const vespalib::string & expand return indexName + "(" + expandedIndexName + ")"; } -const search::feature_t * -getFeaturePtr(const RankProgram &rankProgram) { +search::fef::LazyValue +getFeature(const RankProgram &rankProgram) { search::fef::FeatureResolver resolver(rankProgram.get_seeds()); assert(resolver.num_features() == 1u); - return resolver.resolve_number(0); + return resolver.resolve(0); } } @@ -115,7 +115,7 @@ RankProcessor::init(bool forRanking, size_t wantedHitCount) _rankProgram = _rankSetup.create_second_phase_program(); } setupRankProgram(*_rankProgram); - _rankScorePtr = getFeaturePtr(*_rankProgram); + _rankScore = getFeature(*_rankProgram); _summaryProgram = _rankSetup.create_summary_program(); setupRankProgram(*_summaryProgram); } else { @@ -141,7 +141,8 @@ RankProcessor::RankProcessor(RankManager::Snapshot::SP snapshot, _docId(TermFieldMatchData::invalidId()), _score(0.0), _summaryProgram(), - _rankScorePtr(nullptr), + _zeroScore(), + _rankScore(&_zeroScore), _hitCollector() { } @@ -161,12 +162,9 @@ RankProcessor::initForDumping(size_t wantedHitCount) void RankProcessor::runRankProgram(uint32_t docId) { - _rankProgram->run(docId); - if (_rankScorePtr != nullptr) { - _score = *_rankScorePtr; - if (std::isnan(_score) || std::isinf(_score)) { - _score = -HUGE_VAL; - } + _score = _rankScore.as_number(docId); + if (std::isnan(_score) || std::isinf(_score)) { + _score = -HUGE_VAL; } } @@ -191,7 +189,7 @@ public: virtual void run(uint32_t docid, const std::vector &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); + (void) docid; } }; diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h index 04b8e798298..90813c5ebe6 100644 --- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h +++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h @@ -33,7 +33,8 @@ private: uint32_t _docId; double _score; search::fef::RankProgram::UP _summaryProgram; - const search::feature_t *_rankScorePtr; + search::fef::NumberOrObject _zeroScore; + search::fef::LazyValue _rankScore; HitCollector::UP _hitCollector; void initQueryEnvironment(); -- cgit v1.2.3