summaryrefslogtreecommitdiffstats
path: root/searchsummary
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2022-09-07 01:17:44 +0200
committerTor Egge <Tor.Egge@online.no>2022-09-07 01:17:44 +0200
commit73a65808655d921efa41c66331875b03c271dab1 (patch)
treedc8b713cc4423b6d55c2daee64023f3a2100da5c /searchsummary
parenta0cadecfc18a2a1df075dcc1cd44205a65d0799d (diff)
Remove summary field enumeration spanning summary classes.
Diffstat (limited to 'searchsummary')
-rw-r--r--searchsummary/src/tests/docsummary/document_id_dfw/document_id_dfw_test.cpp1
-rw-r--r--searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp1
-rw-r--r--searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp1
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/res_config_entry.cpp1
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/res_config_entry.h1
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp19
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultclass.h45
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp16
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h18
9 files changed, 5 insertions, 98 deletions
diff --git a/searchsummary/src/tests/docsummary/document_id_dfw/document_id_dfw_test.cpp b/searchsummary/src/tests/docsummary/document_id_dfw/document_id_dfw_test.cpp
index 06a20563161..1c4e201e745 100644
--- a/searchsummary/src/tests/docsummary/document_id_dfw/document_id_dfw_test.cpp
+++ b/searchsummary/src/tests/docsummary/document_id_dfw/document_id_dfw_test.cpp
@@ -74,7 +74,6 @@ DocumentIdDFWTest::DocumentIdDFWTest()
{
auto* cfg = _result_config->AddResultClass("default", 0);
cfg->AddConfigEntry(_field_name.c_str(), search::docsummary::RES_LONG_STRING);
- _result_config->CreateEnumMaps();
}
diff --git a/searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp b/searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp
index 4fcf8c10401..d002a9a2748 100644
--- a/searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp
+++ b/searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp
@@ -100,7 +100,6 @@ public:
EXPECT_TRUE(result_class->AddConfigEntry("array", ResType::RES_JSONSTRING));
EXPECT_TRUE(result_class->AddConfigEntry("map", ResType::RES_JSONSTRING));
EXPECT_TRUE(result_class->AddConfigEntry("map2", ResType::RES_JSONSTRING));
- _config.CreateEnumMaps();
}
~DocsumStore();
const ResultConfig& get_config() const { return _config; }
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 a845a39207f..cbde3d77b4a 100644
--- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
+++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
@@ -117,7 +117,6 @@ DocsumFixture::DocsumFixture()
EXPECT_TRUE(cfg->AddConfigEntry("longdata_field", RES_LONG_DATA));
EXPECT_TRUE(cfg->AddConfigEntry("int_pair_field", RES_JSONSTRING));
config->set_default_result_class_id(0);
- config->CreateEnumMaps();
writer = std::make_unique<DynamicDocsumWriter>(std::move(config), std::unique_ptr<KeywordExtractor>());
int_pair_type.addField(Field("foo", *DataType::INT));
int_pair_type.addField(Field("bar", *DataType::INT));
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/res_config_entry.cpp b/searchsummary/src/vespa/searchsummary/docsummary/res_config_entry.cpp
index b00b5d975a2..df02d438557 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/res_config_entry.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/res_config_entry.cpp
@@ -8,7 +8,6 @@ namespace search::docsummary {
ResConfigEntry::ResConfigEntry() noexcept
: _type(RES_BAD),
_bindname(),
- _enumValue(0),
_docsum_field_writer()
{
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/res_config_entry.h b/searchsummary/src/vespa/searchsummary/docsummary/res_config_entry.h
index 6277e955c3d..aaf0ca905bc 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/res_config_entry.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/res_config_entry.h
@@ -16,7 +16,6 @@ class DocsumFieldWriter;
struct ResConfigEntry {
ResType _type;
vespalib::string _bindname;
- int _enumValue;
std::unique_ptr<DocsumFieldWriter> _docsum_field_writer;
ResConfigEntry() noexcept;
~ResConfigEntry();
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp
index 78a9804ccd4..f84de793815 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp
@@ -8,12 +8,10 @@
namespace search::docsummary {
-ResultClass::ResultClass(const char *name, util::StringEnum & fieldEnum)
+ResultClass::ResultClass(const char *name)
: _name(name),
_entries(),
_nameMap(),
- _fieldEnum(fieldEnum),
- _enumMap(),
_dynInfo(),
_omit_summary_features(false),
_num_field_writer_states(0)
@@ -39,8 +37,6 @@ ResultClass::AddConfigEntry(const char *name, ResType type, std::unique_ptr<Docs
ResConfigEntry e;
e._type = type;
e._bindname = name;
- e._enumValue = _fieldEnum.Add(name);
- assert(e._enumValue >= 0);
if (docsum_field_writer) {
docsum_field_writer->setIndex(_entries.size());
bool generated = docsum_field_writer->IsGenerated();
@@ -60,17 +56,4 @@ ResultClass::AddConfigEntry(const char *name, ResType type)
return AddConfigEntry(name, type, {});
}
-void
-ResultClass::CreateEnumMap()
-{
- _enumMap.resize(_fieldEnum.GetNumEntries());
-
- for (int & value : _enumMap) {
- value = -1;
- }
- for (uint32_t i(0); i < _entries.size(); i++) {
- _enumMap[_entries[i]._enumValue] = i;
- }
-}
-
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h
index e11032d1aac..d55adb5d098 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h
@@ -44,8 +44,6 @@ private:
vespalib::string _name; // name of this class
Configs _entries; // config entries for this result class
NameIdMap _nameMap; // fieldname -> entry index
- util::StringEnum &_fieldEnum; // fieldname -> f.n. enum value [SHARED]
- std::vector<int> _enumMap; // fieldname enum value -> entry index
DynamicInfo _dynInfo; // fields overridden and generated
// Whether or not summary features should be omitted when filling this summary class.
// As default, summary features are always included.
@@ -60,9 +58,8 @@ public:
* ref. to shared string enum object and insert into linked list.
*
* @param name the name of this result class.
- * @param fieldEnum shared object used to enumerate field names.
**/
- ResultClass(const char *name, util::StringEnum & fieldEnum);
+ ResultClass(const char *name);
/**
* Destructor. Delete internal structures.
@@ -101,25 +98,6 @@ public:
bool AddConfigEntry(const char *name, ResType type, std::unique_ptr<DocsumFieldWriter> docsum_field_writer);
bool AddConfigEntry(const char *name, ResType type);
-
-
- /**
- * This method may be called to create an internal mapping from
- * field name enumerated value to field index. When building up a
- * result configuration possibly containing several result classes,
- * all field names are enumerated (across all result classes),
- * assigning a single unique integer value to each field name. This
- * is done with the StringEnum object given to the
- * constructor. This way, fastserver components that want to
- * reference a unique field name may use the enumerated value
- * instead of the string itself. NOTE: This method must be called in
- * order to use the GetIndexFromEnumValue method. NOTE2: This method
- * is called by the ResultConfig::CreateEnumMaps method; no
- * need to call it directly.
- **/
- void CreateEnumMap();
-
-
/**
* Obtain the field index from the field name. The field index may
* be used to look up a config entry in this object, or to look up a
@@ -135,27 +113,6 @@ public:
**/
int GetIndexFromName(const char* name) const;
-
- /**
- * Obtain the field index from the field name enumerated value. The
- * field index may be used to look up a config entry in this object,
- * or to look up a result entry in a GeneralResult
- * object. NOTE: When using the return value from this method to
- * look up a result entry in a GeneralResult object, make sure
- * that the GeneralResult object has this object as it's
- * result class. NOTE2: This method is called by the
- * GeneralResult::GetEntryFromEnumValue method; no need to
- * call it directly. NOTE3: You need to call the CreateEnumMap
- * method before calling this one.
- *
- * @return field index or -1 if not found
- **/
- int GetIndexFromEnumValue(uint32_t value) const
- {
- return (value < _enumMap.size()) ? _enumMap[value] : -1;
- }
-
-
/**
* Obtain config entry by field index.
*
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp
index 63ccf80d4e7..90186c5d1d5 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp
@@ -40,7 +40,7 @@ ResultConfig::~ResultConfig()
void
ResultConfig::Reset()
{
- if (! _classLookup.empty() || _fieldEnum.GetNumEntries() > 0) {
+ if (! _classLookup.empty()) {
Clean();
}
}
@@ -52,7 +52,7 @@ ResultConfig::AddResultClass(const char *name, uint32_t id)
ResultClass *ret = nullptr;
if (id != NoClassID() && (_classLookup.find(id) == _classLookup.end())) {
- auto rc = std::make_unique<ResultClass>(name, _fieldEnum);
+ auto rc = std::make_unique<ResultClass>(name);
ret = rc.get();
_classLookup[id] = std::move(rc);
if (_nameLookup.find(name) != _nameLookup.end()) {
@@ -84,14 +84,6 @@ ResultConfig::LookupResultClassId(const vespalib::string &name) const
}
-void
-ResultConfig::CreateEnumMaps()
-{
- for (auto & entry : _classLookup) {
- entry.second->CreateEnumMap();
- }
-}
-
namespace {
std::atomic<bool> global_useV8geoPositions = false;
}
@@ -156,9 +148,7 @@ ResultConfig::ReadConfig(const vespa::config::search::SummaryConfig &cfg, const
}
}
}
- if (rc) {
- CreateEnumMaps(); // create mappings needed by TVM
- } else {
+ if (!rc) {
Reset(); // FAIL, discard all config
}
return rc;
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h
index 9aaf6fa65b3..456cf9dea69 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h
@@ -35,7 +35,6 @@ private:
typedef vespalib::hash_map<uint32_t, std::unique_ptr<ResultClass>> IdMap;
uint32_t _defaultSummaryId;
bool _useV8geoPositions;
- search::util::StringEnum _fieldEnum;
IdMap _classLookup;
NameMap _nameLookup; // name -> class id
@@ -154,23 +153,6 @@ public:
**/
uint32_t GetNumResultClasses() const { return _classLookup.size(); }
-
- /**
- * Obtain the string enumeration object that holds the mapping from
- * field name to field name enumerated value.
- *
- * @return field name enumeration.
- **/
- const search::util::StringEnum & GetFieldNameEnum() const { return _fieldEnum; }
-
-
- /**
- * This method calls the CreateEnumMap on all result classes held by
- * this object. This is needed in order to look up fields by field
- * name enumerated value.
- **/
- void CreateEnumMaps();
-
/**
* Read config that has been fetched from configserver.
*