summaryrefslogtreecommitdiff
path: root/src/mongo/db/exec/document_value/document_metadata_fields.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/exec/document_value/document_metadata_fields.cpp')
-rw-r--r--src/mongo/db/exec/document_value/document_metadata_fields.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mongo/db/exec/document_value/document_metadata_fields.cpp b/src/mongo/db/exec/document_value/document_metadata_fields.cpp
index d33eee6c140..0532ed2e8cb 100644
--- a/src/mongo/db/exec/document_value/document_metadata_fields.cpp
+++ b/src/mongo/db/exec/document_value/document_metadata_fields.cpp
@@ -96,6 +96,9 @@ void DocumentMetadataFields::mergeWith(const DocumentMetadataFields& other) {
if (!hasSearchSortValues() && other.hasSearchSortValues()) {
setSearchSortValues(other.getSearchSortValues());
}
+ if (!hasVectorSearchScore() && other.hasVectorSearchScore()) {
+ setVectorSearchScore(other.getVectorSearchScore());
+ }
}
void DocumentMetadataFields::copyFrom(const DocumentMetadataFields& other) {
@@ -135,6 +138,9 @@ void DocumentMetadataFields::copyFrom(const DocumentMetadataFields& other) {
if (other.hasSearchSortValues()) {
setSearchSortValues(other.getSearchSortValues());
}
+ if (other.hasVectorSearchScore()) {
+ setVectorSearchScore(other.getVectorSearchScore());
+ }
}
size_t DocumentMetadataFields::getApproximateSize() const {
@@ -216,6 +222,10 @@ void DocumentMetadataFields::serializeForSorter(BufBuilder& buf) const {
buf.appendNum(static_cast<char>(MetaType::kSearchSortValues + 1));
getSearchSortValues().appendSelfToBufBuilder(buf);
}
+ if (hasVectorSearchScore()) {
+ buf.appendNum(static_cast<char>(MetaType::kVectorSearchScore + 1));
+ buf.appendNum(getVectorSearchScore());
+ }
buf.appendNum(static_cast<char>(0));
}
@@ -256,6 +266,8 @@ void DocumentMetadataFields::deserializeForSorter(BufReader& buf, DocumentMetada
} else if (marker == static_cast<char>(MetaType::kSearchSortValues) + 1) {
out->setSearchSortValues(
BSONObj::deserializeForSorter(buf, BSONObj::SorterDeserializeSettings()));
+ } else if (marker == static_cast<char>(MetaType::kVectorSearchScore) + 1) {
+ out->setVectorSearchScore(buf.read<LittleEndian<double>>());
} else {
uasserted(28744, "Unrecognized marker, unable to deserialize buffer");
}
@@ -317,6 +329,8 @@ const char* DocumentMetadataFields::typeNameToDebugString(DocumentMetadataFields
return "timeseries bucket max time";
case DocumentMetadataFields::kSearchSortValues:
return "$search sort values";
+ case DocumentMetadataFields::kVectorSearchScore:
+ return "$vectorSearch distance";
default:
MONGO_UNREACHABLE;
}