diff options
author | Haavard <havardpe@yahoo-inc.com> | 2016-12-08 14:41:21 +0000 |
---|---|---|
committer | Haavard <havardpe@yahoo-inc.com> | 2016-12-08 14:41:21 +0000 |
commit | 536eb8d55ee4867d059c87269302dc281d7b31cf (patch) | |
tree | 64c5976e437aa3799d9e690e12d348e52c539936 /searchlib | |
parent | 8feba6199b5858a8db842a19532f6cdea71243a5 (diff) |
add information about which features are objects
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/fef/feature_resolver.h | 8 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/fef/rank_program.cpp | 4 |
2 files changed, 9 insertions, 3 deletions
diff --git a/searchlib/src/vespa/searchlib/fef/feature_resolver.h b/searchlib/src/vespa/searchlib/fef/feature_resolver.h index aa3eb01f2ae..cdb65c80a56 100644 --- a/searchlib/src/vespa/searchlib/fef/feature_resolver.h +++ b/searchlib/src/vespa/searchlib/fef/feature_resolver.h @@ -22,17 +22,21 @@ private: friend class RankProgram; // inner class with decoupled compilation std::vector<vespalib::string> _names; std::vector<const NumberOrObject *> _features; - FeatureResolver(size_t size_hint) : _names(), _features() { + std::vector<bool> _is_object; + FeatureResolver(size_t size_hint) : _names(), _features(), _is_object() { _names.reserve(size_hint); _features.reserve(size_hint); + _is_object.reserve(size_hint); } - void add(const vespalib::string &name, const NumberOrObject *feature) { + void add(const vespalib::string &name, const NumberOrObject *feature, bool is_object) { _names.push_back(name); _features.push_back(feature); + _is_object.push_back(is_object); } public: size_t num_features() const { return _names.size(); } const vespalib::string &name_of(size_t i) const { return _names[i]; } + bool is_object(size_t i) const { return _is_object[i]; } const feature_t *resolve_number(size_t i) const { return &(_features[i]->as_number); } const vespalib::eval::Value::CREF *resolve_object(size_t i) const { return &(_features[i]->as_object); } }; diff --git a/searchlib/src/vespa/searchlib/fef/rank_program.cpp b/searchlib/src/vespa/searchlib/fef/rank_program.cpp index 59671e42782..6217c5ee9d5 100644 --- a/searchlib/src/vespa/searchlib/fef/rank_program.cpp +++ b/searchlib/src/vespa/searchlib/fef/rank_program.cpp @@ -118,7 +118,9 @@ RankProgram::resolve(const std::vector<vespalib::string> &names, { FeatureResolver result(names.size()); for (size_t i = 0; i < names.size(); ++i) { - result.add(names[i], match_data().resolve_raw(handles[i])); + result.add(names[i], + match_data().resolve_raw(handles[i]), + match_data().feature_is_object(handles[i])); } return result; } |