summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.h1
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp8
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.h2
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;
};