diff options
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.cpp | 14 |
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; } |
