summaryrefslogtreecommitdiffstats
path: root/searchsummary
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-01-05 14:06:36 +0100
committerTor Egge <Tor.Egge@online.no>2023-01-05 14:06:36 +0100
commitcb652bc935fd698aa7c34129fecc48853051eed3 (patch)
tree801f177238a5d9f8b12571b741fd72081b078ba0 /searchsummary
parent11d6ee9c512a530800a9e1bf2f50b70c19833ea5 (diff)
Add interface class IKeywordExtractor.
Diffstat (limited to 'searchsummary')
-rw-r--r--searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp4
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h4
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h6
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/i_keyword_extractor.h21
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.cpp4
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.h6
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp3
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h7
9 files changed, 39 insertions, 18 deletions
diff --git a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
index a44d56e894d..3240dd43c00 100644
--- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
+++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
@@ -15,7 +15,7 @@
#include <vespa/searchsummary/docsummary/docsum_store_document.h>
#include <vespa/searchsummary/docsummary/docsumstate.h>
#include <vespa/searchsummary/docsummary/docsumwriter.h>
-#include <vespa/searchsummary/docsummary/keywordextractor.h>
+#include <vespa/searchsummary/docsummary/i_keyword_extractor.h>
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/vespalib/data/smart_buffer.h>
#include <vespa/vespalib/gtest/gtest.h>
@@ -117,7 +117,7 @@ SlimeSummaryTest::SlimeSummaryTest()
EXPECT_TRUE(cfg->addConfigEntry("longdata_field"));
EXPECT_TRUE(cfg->addConfigEntry("int_pair_field"));
config->set_default_result_class_id(0);
- writer = std::make_unique<DynamicDocsumWriter>(std::move(config), std::unique_ptr<KeywordExtractor>());
+ writer = std::make_unique<DynamicDocsumWriter>(std::move(config), std::unique_ptr<IKeywordExtractor>());
int_pair_type.addField(Field("foo", *DataType::INT));
int_pair_type.addField(Field("bar", *DataType::INT));
doc_type.addField(Field("int_field", *DataType::INT));
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h
index 86cc94d69bc..a228f93e1d4 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h
@@ -26,7 +26,7 @@ namespace search::docsummary {
class GetDocsumsState;
class IDocsumEnvironment;
-class KeywordExtractor;
+class IKeywordExtractor;
class DocsumFieldWriterState;
class GetDocsumsStateCallback
@@ -52,7 +52,7 @@ public:
GetDocsumArgs _args; // from getdocsums request
std::vector<uint32_t> _docsumbuf; // from getdocsums request
- KeywordExtractor *_kwExtractor;
+ IKeywordExtractor *_kwExtractor;
GetDocsumsStateCallback &_callback;
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
index 88e6951f3b2..8e12f0c875b 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
@@ -86,7 +86,7 @@ DynamicDocsumWriter::insertDocsum(const ResolveClassInfo & rci, uint32_t docid,
}
}
-DynamicDocsumWriter::DynamicDocsumWriter(std::unique_ptr<ResultConfig> config, std::unique_ptr<KeywordExtractor> extractor)
+DynamicDocsumWriter::DynamicDocsumWriter(std::unique_ptr<ResultConfig> config, std::unique_ptr<IKeywordExtractor> extractor)
: _resultConfig(std::move(config)),
_keywordExtractor(std::move(extractor))
{
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
index 20d132c150f..65a1d923851 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
@@ -17,7 +17,7 @@ namespace vespalib { class Slime; }
namespace search::docsummary {
-class KeywordExtractor;
+class IKeywordExtractor;
static constexpr uint32_t SLIME_MAGIC_ID = 0x55555555;
@@ -51,10 +51,10 @@ class DynamicDocsumWriter : public IDocsumWriter
{
private:
std::unique_ptr<ResultConfig> _resultConfig;
- std::unique_ptr<KeywordExtractor> _keywordExtractor;
+ std::unique_ptr<IKeywordExtractor> _keywordExtractor;
public:
- DynamicDocsumWriter(std::unique_ptr<ResultConfig> config, std::unique_ptr<KeywordExtractor> extractor);
+ DynamicDocsumWriter(std::unique_ptr<ResultConfig> config, std::unique_ptr<IKeywordExtractor> extractor);
DynamicDocsumWriter(const DynamicDocsumWriter &) = delete;
DynamicDocsumWriter& operator=(const DynamicDocsumWriter &) = delete;
~DynamicDocsumWriter() override;
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/i_keyword_extractor.h b/searchsummary/src/vespa/searchsummary/docsummary/i_keyword_extractor.h
new file mode 100644
index 00000000000..f9f2db871f9
--- /dev/null
+++ b/searchsummary/src/vespa/searchsummary/docsummary/i_keyword_extractor.h
@@ -0,0 +1,21 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vespalib/stllike/string.h>
+
+namespace search::docsummary {
+
+/*
+ * Interface class for checking if query term index name indicates that
+ * related query term is useful from the perspective of juniper.
+ */
+class IKeywordExtractor
+{
+public:
+ virtual ~IKeywordExtractor() = default;
+
+ virtual bool isLegalIndex(vespalib::stringref idx) const = 0;
+};
+
+}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.cpp
index 455027a1234..d63c9359aec 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.cpp
@@ -1,16 +1,16 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "juniper_query_adapter.h"
+#include "i_keyword_extractor.h"
#include "juniper_dfw_query_item.h"
#include "juniper_dfw_term_visitor.h"
-#include "keywordextractor.h"
#include <vespa/searchlib/fef/properties.h>
#include <vespa/searchlib/parsequery/stackdumpiterator.h>
#include <vespa/searchlib/queryeval/split_float.h>
namespace search::docsummary {
-JuniperQueryAdapter::JuniperQueryAdapter(KeywordExtractor *kwExtractor, vespalib::stringref buf,
+JuniperQueryAdapter::JuniperQueryAdapter(IKeywordExtractor *kwExtractor, vespalib::stringref buf,
const search::fef::Properties *highlightTerms)
: _kwExtractor(kwExtractor),
_buf(buf),
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.h b/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.h
index ac6fe0d7c32..7c975c6120d 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.h
@@ -10,7 +10,7 @@ namespace search::fef { class Properties; }
namespace search::docsummary {
-class KeywordExtractor;
+class IKeywordExtractor;
/*
* Class implementing an adapter used by juniper to examine the current
@@ -19,14 +19,14 @@ class KeywordExtractor;
class JuniperQueryAdapter : public juniper::IQuery
{
private:
- KeywordExtractor *_kwExtractor;
+ IKeywordExtractor *_kwExtractor;
const vespalib::stringref _buf;
const search::fef::Properties *_highlightTerms;
public:
JuniperQueryAdapter(const JuniperQueryAdapter&) = delete;
JuniperQueryAdapter operator= (const JuniperQueryAdapter&) = delete;
- JuniperQueryAdapter(KeywordExtractor *kwExtractor, vespalib::stringref buf,
+ JuniperQueryAdapter(IKeywordExtractor *kwExtractor, vespalib::stringref buf,
const search::fef::Properties *highlightTerms = nullptr);
~JuniperQueryAdapter() override;
bool skipItem(search::SimpleQueryStackDumpIterator *iterator) const;
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp
index 9eab825d049..8b9f6dc38a9 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp
@@ -18,7 +18,8 @@ bool useful(search::ParseItem::ItemCreator creator)
KeywordExtractor::KeywordExtractor()
- : _legalPrefixes(),
+ : IKeywordExtractor(),
+ _legalPrefixes(),
_legalIndexes()
{
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h
index fbc16550542..6899d84091b 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h
@@ -2,13 +2,12 @@
#pragma once
+#include "i_keyword_extractor.h"
#include <vespa/vespalib/stllike/hash_set.h>
namespace search::docsummary {
-class IDocsumEnvironment;
-
-class KeywordExtractor
+class KeywordExtractor : public IKeywordExtractor
{
public:
@@ -79,7 +78,7 @@ public:
*
* @return true if the given index name is legal.
**/
- bool isLegalIndex(vespalib::stringref idx) const;
+ bool isLegalIndex(vespalib::stringref idx) const override;
};
}