summaryrefslogtreecommitdiffstats
path: root/streamingvisitors
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahoo-inc.com>2016-12-08 15:25:51 +0000
committerTor Egge <Tor.Egge@yahoo-inc.com>2016-12-08 15:25:51 +0000
commitbe0fdc306a1c9a8fc5687f99e8bcb9ed8f220393 (patch)
tree92d88a9d5cd03243115534a1fbfec55a0ee6d66f /streamingvisitors
parent3ebce06c8385e6bbd27785c4791f9af10487fb42 (diff)
Reduce dependency on match data and handles.
Use feature resolver to get a pointer to rank score feature.
Diffstat (limited to 'streamingvisitors')
-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();