diff options
author | Tor Egge <Tor.Egge@yahoo-inc.com> | 2016-12-08 15:25:51 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@yahoo-inc.com> | 2016-12-08 15:25:51 +0000 |
commit | be0fdc306a1c9a8fc5687f99e8bcb9ed8f220393 (patch) | |
tree | 92d88a9d5cd03243115534a1fbfec55a0ee6d66f /streamingvisitors | |
parent | 3ebce06c8385e6bbd27785c4791f9af10487fb42 (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.cpp | 22 | ||||
-rw-r--r-- | streamingvisitors/src/vespa/searchvisitor/rankprocessor.h | 2 |
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(); |