aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp22
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankprocessor.h2
2 files changed, 10 insertions, 14 deletions
diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp
index d1a39add85d..aa42ec40bb9 100644
--- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp
@@ -41,14 +41,11 @@ getIndexName(const vespalib::string & indexName, const vespalib::string & expand
return indexName + "(" + expandedIndexName + ")";
}
-FeatureHandle
-getFeatureHandle(const RankProgram &rankProgram) {
- std::vector<vespalib::string> featureNames;
- std::vector<FeatureHandle> featureHandles;
- rankProgram.get_seed_handles(featureNames, featureHandles);
- assert(featureNames.size() == 1);
- assert(featureHandles.size() == 1);
- return featureHandles.front();
+const search::feature_t *
+getFeaturePtr(const RankProgram &rankProgram) {
+ search::fef::FeatureResolver resolver(rankProgram.get_seeds());
+ assert(resolver.num_features() == 1u);
+ return resolver.resolve_number(0);
}
}
@@ -119,7 +116,7 @@ RankProcessor::init(bool forRanking, size_t wantedHitCount)
_rankProgram = _rankSetup.create_second_phase_program();
}
setupRankProgram(*_rankProgram);
- _rankScoreHandle = getFeatureHandle(*_rankProgram);
+ _rankScorePtr = getFeaturePtr(*_rankProgram);
_summaryProgram = _rankSetup.create_summary_program();
setupRankProgram(*_summaryProgram);
} else {
@@ -144,7 +141,7 @@ RankProcessor::RankProcessor(RankManager::Snapshot::SP snapshot,
_rankProgram(),
_score(0.0),
_summaryProgram(),
- _rankScoreHandle(IllegalHandle),
+ _rankScorePtr(nullptr),
_hitCollector()
{
}
@@ -165,9 +162,8 @@ void
RankProcessor::runRankProgram(uint32_t docId)
{
_rankProgram->run(docId);
- if (_rankScoreHandle != IllegalHandle) {
- MatchData &matchData = _rankProgram->match_data();
- _score = *(matchData.resolveFeature(_rankScoreHandle));
+ if (_rankScorePtr != nullptr) {
+ _score = *_rankScorePtr;
if (std::isnan(_score) || std::isinf(_score)) {
_score = -HUGE_VAL;
}
diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h
index 0596d0803f3..20dd3f5fb88 100644
--- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h
+++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h
@@ -32,7 +32,7 @@ private:
search::fef::RankProgram::UP _rankProgram;
double _score;
search::fef::RankProgram::UP _summaryProgram;
- search::fef::FeatureHandle _rankScoreHandle;
+ const search::feature_t *_rankScorePtr;
HitCollector::UP _hitCollector;
void initQueryEnvironment();