diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2024-02-18 09:36:40 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2024-02-18 09:36:40 +0000 |
commit | 9486db5d9672be5a5e4316af368e2b604f7b068d (patch) | |
tree | 18b9d4015ed80d9eb0d2612ca638125eeaff507e | |
parent | 4ad220bb0e9d62562ae631ad5d25fa783f608a6a (diff) |
Propagate highlighterms.
3 files changed, 11 insertions, 0 deletions
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.h b/searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.h index 0051af29c21..6e0d610da97 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.h @@ -46,6 +46,7 @@ public: bool dumpFeatures() const { return _dumpFeatures; } const fef::Properties &highlightTerms() const { return _highlightTerms; } + void highlightTerms(fef::Properties & terms) { _highlightTerms = terms; } void set_fields(const FieldSet& fields_in) { _fields = fields_in; } const FieldSet& get_fields() const { return _fields; } bool need_field(vespalib::stringref field) const; diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp index 68c5f5cfdc8..e6f682321d8 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp @@ -187,6 +187,7 @@ SearchVisitor::SummaryGenerator::SummaryGenerator(const search::IAttributeManage _dump_features(), _location(), _stack_dump(), + _highlight_terms(), _attr_manager(attr_manager), _query_normalization(query_normalization) { @@ -219,6 +220,7 @@ SearchVisitor::SummaryGenerator::get_streaming_docsums_state(vespalib::stringref if (_stack_dump.has_value()) { ds._args.setStackDump(_stack_dump.value().size(), _stack_dump.value().data()); } + ds._args.highlightTerms(_highlight_terms); _docsumWriter->initState(_attr_manager, ds, state->get_resolve_class_info()); auto insres = _docsum_states.insert(std::make_pair(summary_class, std::move(state))); return *insres.first->second; @@ -443,6 +445,12 @@ SearchVisitor::init(const Parameters & params) i, j, string(prop.key(j)).c_str(), string(prop.value(j)).c_str()); _rankController.getFeatureOverrides().add(prop.key(j), prop.value(j)); } + } else if (prop.name() == "highlightterms") { // pick up feature overrides + for (uint32_t j = 0; j < prop.size(); ++j) { + LOG(debug, "Hightligthterms[%u][%u]: key '%s' -> value '%s'", + i, j, string(prop.key(j)).c_str(), string(prop.value(j)).c_str()); + _summaryGenerator.highlightTerms().add(prop.key(j), prop.value(j)); + } } } } diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h index 567cb1b1f2f..7d73a159f6f 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h @@ -423,6 +423,7 @@ private: void set_location(const vespalib::string& location) { _location = location; } void set_stack_dump(std::vector<char> stack_dump) { _stack_dump = std::move(stack_dump); } void add_summary_field(vespalib::stringref field) { _summaryFields.emplace_back(field); } + search::fef::Properties & highlightTerms() { return _highlight_terms;} private: StreamingDocsumsState& get_streaming_docsums_state(vespalib::stringref summary_class); vsm::GetDocsumsStateCallback _callback; @@ -434,6 +435,7 @@ private: std::optional<bool> _dump_features; std::optional<vespalib::string> _location; std::optional<std::vector<char>> _stack_dump; + search::fef::Properties _highlight_terms; const search::IAttributeManager& _attr_manager; const search::QueryNormalization & _query_normalization; }; |