aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2022-06-30 12:03:22 +0000
committerGeir Storli <geirst@yahooinc.com>2022-06-30 12:03:22 +0000
commit8b6beaa1260ff13ac2fd14778820ab34d8b35855 (patch)
tree1a9ddc63497203b25def8301c06114c5756954d5 /searchlib
parentdc1b5d78ca36f10d959cc19469e96c3f719030cf (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.h7
-rw-r--r--searchlib/src/vespa/searchlib/fef/simpletermdata.cpp10
-rw-r--r--searchlib/src/vespa/searchlib/fef/simpletermdata.h35
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.
*