summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2021-11-03 16:00:03 +0000
committerHåvard Pettersen <havardpe@oath.com>2021-11-04 15:11:32 +0000
commit2b2a16ac12b6fd40008bac37d59ec6fc89f66539 (patch)
tree3559cd7f934940a4fb2dc7cb1299133b0acf6462 /searchlib
parent6ebe77e2ceebd37aa26aa762f4c608fee22c1b40 (diff)
calculate match features
+ factor out feature extraction + improve summary feature testing + extract returned docids with ordering
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/common/featureset.h8
-rw-r--r--searchlib/src/vespa/searchlib/engine/searchreply.cpp20
-rw-r--r--searchlib/src/vespa/searchlib/engine/searchreply.h3
3 files changed, 20 insertions, 11 deletions
diff --git a/searchlib/src/vespa/searchlib/common/featureset.h b/searchlib/src/vespa/searchlib/common/featureset.h
index 3bce5c92640..1415d4b48ef 100644
--- a/searchlib/src/vespa/searchlib/common/featureset.h
+++ b/searchlib/src/vespa/searchlib/common/featureset.h
@@ -146,5 +146,11 @@ public:
const Value *getFeaturesByDocId(uint32_t docId) const;
};
-} // namespace search
+// An even simpler feature container. Used to pass match features around.
+struct FeatureValues {
+ using Value = FeatureSet::Value;
+ std::vector<vespalib::string> names;
+ std::vector<Value> values; // values.size() == names.size() * N
+};
+} // namespace search
diff --git a/searchlib/src/vespa/searchlib/engine/searchreply.cpp b/searchlib/src/vespa/searchlib/engine/searchreply.cpp
index 954b3d5141c..8caf254fff7 100644
--- a/searchlib/src/vespa/searchlib/engine/searchreply.cpp
+++ b/searchlib/src/vespa/searchlib/engine/searchreply.cpp
@@ -12,6 +12,7 @@ SearchReply::SearchReply()
groupResult(),
coverage(),
hits(),
+ match_features(),
request(),
my_issues()
{ }
@@ -19,15 +20,16 @@ SearchReply::SearchReply()
SearchReply::~SearchReply() = default;
SearchReply::SearchReply(const SearchReply &rhs)
- : _distributionKey (rhs._distributionKey),
- totalHitCount(rhs.totalHitCount),
- sortIndex (rhs.sortIndex),
- sortData (rhs.sortData),
- groupResult (rhs.groupResult),
- coverage (rhs.coverage),
- hits (rhs.hits),
- request(), // NB not copied
- my_issues() // NB not copied
+ : _distributionKey (rhs._distributionKey),
+ totalHitCount (rhs.totalHitCount),
+ sortIndex (rhs.sortIndex),
+ sortData (rhs.sortData),
+ groupResult (rhs.groupResult),
+ coverage (rhs.coverage),
+ hits (rhs.hits),
+ match_features (rhs.match_features),
+ request(), // NB not copied
+ my_issues() // NB not copied
{ }
}
diff --git a/searchlib/src/vespa/searchlib/engine/searchreply.h b/searchlib/src/vespa/searchlib/engine/searchreply.h
index b23a5fc192e..25418a698c2 100644
--- a/searchlib/src/vespa/searchlib/engine/searchreply.h
+++ b/searchlib/src/vespa/searchlib/engine/searchreply.h
@@ -5,6 +5,7 @@
#include <vespa/document/base/globalid.h>
#include <vespa/searchlib/common/hitrank.h>
#include <vespa/searchlib/common/unique_issues.h>
+#include <vespa/searchlib/common/featureset.h>
#include <vespa/vespalib/util/array.h>
#include <vespa/searchlib/engine/searchrequest.h>
#include <vector>
@@ -70,6 +71,7 @@ public:
vespalib::Array<char> groupResult;
Coverage coverage;
std::vector<Hit> hits;
+ FeatureValues match_features;
PropertiesMap propertiesMap;
SearchRequest::UP request;
@@ -84,4 +86,3 @@ public:
};
}
-