diff options
Diffstat (limited to 'searchsummary')
-rw-r--r-- | searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp | 10 | ||||
-rw-r--r-- | searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp | 10 |
2 files changed, 14 insertions, 6 deletions
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp index a1c96bb3e5b..71febe10e59 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp @@ -30,12 +30,16 @@ RankFeaturesDFW::insertField(uint32_t docid, GetDocsumsState *state, } } const FeatureSet::StringVector & names = state->_rankFeatures->getNames(); - const feature_t * values = state->_rankFeatures->getFeaturesByDocId(docid); + const FeatureSet::Value * values = state->_rankFeatures->getFeaturesByDocId(docid); if (type == RES_FEATUREDATA && values != nullptr) { vespalib::slime::Cursor& obj = target.insertObject(); for (uint32_t i = 0; i < names.size(); ++i) { vespalib::Memory name(names[i].c_str(), names[i].size()); - obj.setDouble(name, values[i]); + if (values[i].is_data()) { + obj.setData(name, values[i].as_data()); + } else { + obj.setDouble(name, values[i].as_double()); + } } return; } @@ -44,7 +48,7 @@ RankFeaturesDFW::insertField(uint32_t docid, GetDocsumsState *state, json.clear(); json.beginObject(); for (uint32_t i = 0; i < names.size(); ++i) { - featureDump(json, names[i], values[i]); + featureDump(json, names[i], values[i].as_double()); } json.endObject(); vespalib::Memory value(json.toString().data(), diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp index 9992d782d6e..c5b027a372d 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp @@ -37,12 +37,16 @@ SummaryFeaturesDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType } } const FeatureSet::StringVector &names = state->_summaryFeatures->getNames(); - const feature_t *values = state->_summaryFeatures->getFeaturesByDocId(docid); + const FeatureSet::Value *values = state->_summaryFeatures->getFeaturesByDocId(docid); if (type == RES_FEATUREDATA && values != nullptr) { vespalib::slime::Cursor& obj = target.insertObject(); for (uint32_t i = 0; i < names.size(); ++i) { vespalib::Memory name(names[i].c_str(), names[i].size()); - obj.setDouble(name, values[i]); + if (values[i].is_data()) { + obj.setData(name, values[i].as_data()); + } else { + obj.setDouble(name, values[i].as_double()); + } } if (state->_summaryFeaturesCached) { obj.setDouble(_M_cached, 1.0); @@ -56,7 +60,7 @@ SummaryFeaturesDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType json.clear(); json.beginObject(); for (uint32_t i = 0; i < names.size(); ++i) { - featureDump(json, names[i], values[i]); + featureDump(json, names[i], values[i].as_double()); } json.appendKey(_G_cached); if (state->_summaryFeaturesCached) { |