aboutsummaryrefslogtreecommitdiffstats
path: root/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.h
diff options
context:
space:
mode:
Diffstat (limited to 'searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.h')
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.h
new file mode 100644
index 00000000000..f5a980533fa
--- /dev/null
+++ b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.h
@@ -0,0 +1,41 @@
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "docsum_field_writer.h"
+#include <memory>
+
+namespace juniper {
+ class Config;
+ class Juniper;
+}
+namespace vespalib::slime { struct Inserter; }
+
+namespace search::docsummary {
+
+class IQueryTermFilter;
+class IQueryTermFilterFactory;
+
+class DynamicTeaserDFW : public DocsumFieldWriter
+{
+public:
+ DynamicTeaserDFW(const DynamicTeaserDFW &) = delete;
+ DynamicTeaserDFW & operator = (const DynamicTeaserDFW &) = delete;
+ explicit DynamicTeaserDFW(const juniper::Juniper * juniper, const char *fieldName, vespalib::stringref inputField,
+ const IQueryTermFilterFactory& query_term_filter_factory) ;
+ ~DynamicTeaserDFW() override;
+
+ bool isGenerated() const override { return false; }
+ void insertField(uint32_t docid, const IDocsumStoreDocument* doc, GetDocsumsState& state,
+ vespalib::slime::Inserter &target) const override;
+ void insert_juniper_field(uint32_t docid, vespalib::stringref input, GetDocsumsState& state,
+ vespalib::slime::Inserter& inserter) const;
+private:
+ const juniper::Juniper *_juniper;
+ vespalib::string _input_field_name;
+ std::unique_ptr<juniper::Config> _juniperConfig;
+ std::shared_ptr<const IQueryTermFilter> _query_term_filter;
+};
+
+}
+