aboutsummaryrefslogtreecommitdiffstats
path: root/streamingvisitors
diff options
context:
space:
mode:
authorHaavard <havardpe@yahoo-inc.com>2017-02-23 16:39:23 +0000
committerHaavard <havardpe@yahoo-inc.com>2017-02-23 17:10:37 +0000
commit5ce267460836efe84c73451ca990280b845976c8 (patch)
tree856097607a3b18f026736f05f326a2a17f0b59f4 /streamingvisitors
parent9cb7505ccdc58dcfaa341a9c54eee60d2d16531e (diff)
update with lazy API
Diffstat (limited to 'streamingvisitors')
-rw-r--r--streamingvisitors/src/tests/hitcollector/hitcollector.cpp4
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp22
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankprocessor.h3
4 files changed, 15 insertions, 16 deletions
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<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);
+ (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();