diff options
author | Geir Storli <geirst@yahooinc.com> | 2022-06-30 12:03:22 +0000 |
---|---|---|
committer | Geir Storli <geirst@yahooinc.com> | 2022-06-30 12:03:22 +0000 |
commit | 8b6beaa1260ff13ac2fd14778820ab34d8b35855 (patch) | |
tree | 1a9ddc63497203b25def8301c06114c5756954d5 /searchlib | |
parent | dc1b5d78ca36f10d959cc19469e96c3f719030cf (diff) |
Extend ITermData with a function to get the name of a query tensor a term is referencing.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/fef/itermdata.h | 7 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/fef/simpletermdata.cpp | 10 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/fef/simpletermdata.h | 35 |
3 files changed, 23 insertions, 29 deletions
diff --git a/searchlib/src/vespa/searchlib/fef/itermdata.h b/searchlib/src/vespa/searchlib/fef/itermdata.h index aca92aedfd5..306c91f7ab2 100644 --- a/searchlib/src/vespa/searchlib/fef/itermdata.h +++ b/searchlib/src/vespa/searchlib/fef/itermdata.h @@ -4,7 +4,9 @@ #include "itermfielddata.h" #include <vespa/searchlib/query/weight.h> +#include <vespa/vespalib/stllike/string.h> #include <cstddef> +#include <optional> namespace search::fef { @@ -35,6 +37,11 @@ public: virtual uint32_t getUniqueId() const = 0; /** + * Returns the name of a query tensor this term is referencing, if set. + */ + virtual std::optional<vespalib::string> query_tensor_name() const = 0; + + /** * Get number of fields searched **/ virtual size_t numFields() const = 0; diff --git a/searchlib/src/vespa/searchlib/fef/simpletermdata.cpp b/searchlib/src/vespa/searchlib/fef/simpletermdata.cpp index ee079ce8239..fdea499f9b4 100644 --- a/searchlib/src/vespa/searchlib/fef/simpletermdata.cpp +++ b/searchlib/src/vespa/searchlib/fef/simpletermdata.cpp @@ -2,14 +2,14 @@ #include "simpletermdata.h" -namespace search { -namespace fef { +namespace search::fef { SimpleTermData::SimpleTermData() : _weight(0), _numTerms(0), _termIndex(0), _uniqueId(0), + _query_tensor_name(), _fields() { } @@ -18,6 +18,7 @@ SimpleTermData::SimpleTermData(const ITermData &rhs) : _weight(rhs.getWeight()), _numTerms(rhs.getPhraseLength()), _uniqueId(rhs.getUniqueId()), + _query_tensor_name(rhs.query_tensor_name()), _fields() { for (size_t i(0), m(rhs.numFields()); i < m; ++i) { @@ -25,5 +26,6 @@ SimpleTermData::SimpleTermData(const ITermData &rhs) } } -} // namespace fef -} // namespace search +SimpleTermData::~SimpleTermData() = default; + +} diff --git a/searchlib/src/vespa/searchlib/fef/simpletermdata.h b/searchlib/src/vespa/searchlib/fef/simpletermdata.h index 2169334e36a..c59816dc687 100644 --- a/searchlib/src/vespa/searchlib/fef/simpletermdata.h +++ b/searchlib/src/vespa/searchlib/fef/simpletermdata.h @@ -22,6 +22,7 @@ private: uint32_t _numTerms; uint32_t _termIndex; uint32_t _uniqueId; + std::optional<vespalib::string> _query_tensor_name; std::vector<SimpleTermFieldData> _fields; @@ -36,45 +37,24 @@ public: **/ SimpleTermData(const ITermData &rhs); + ~SimpleTermData(); + //----------- ITermData implementation ------------------------------------ - /** - * Returns the term weight. - **/ query::Weight getWeight() const override { return _weight; } - /** - * Returns the number of terms represented by this term data object. - **/ uint32_t getPhraseLength() const override { return _numTerms; } - /** - * Obtain the unique id of this term. 0 means not set. - * - * @return unique id or 0 - **/ uint32_t getUniqueId() const override { return _uniqueId; } - /** - * Get number of fields searched - **/ + std::optional<vespalib::string> query_tensor_name() const override { return _query_tensor_name; } + size_t numFields() const override { return _fields.size(); } - /** - * Direct access to data for individual fields - * @param i local index, must have: 0 <= i < numFields() - */ const ITermFieldData &field(size_t i) const override { return _fields[i]; } - /** - * Obtain information about a specific field that may be searched - * by this term. If the requested field is not searched by this - * term, NULL will be returned. - * - * @return term field data, or NULL if not found - **/ const ITermFieldData *lookupField(uint32_t fieldId) const override { for (size_t fieldIdx(0), m(numFields()); fieldIdx < m; ++fieldIdx) { const ITermFieldData &tfd = field(fieldIdx); @@ -125,6 +105,11 @@ public: return *this; } + SimpleTermData &set_query_tensor_name(const vespalib::string &name) { + _query_tensor_name = name; + return *this; + } + /** * Add a new field to the set that is searched by this term. * |