From 0998b278cf934874d11b2b0502f77809c4dc69f2 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 10 Dec 2021 05:51:43 +0300 Subject: [PATCH] Update HNSWMap.cs Make map serializable --- ZeroLevel.HNSW/HNSWMap.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ZeroLevel.HNSW/HNSWMap.cs b/ZeroLevel.HNSW/HNSWMap.cs index 129151c..f6986d8 100644 --- a/ZeroLevel.HNSW/HNSWMap.cs +++ b/ZeroLevel.HNSW/HNSWMap.cs @@ -1,5 +1,6 @@ using System.Collections.Concurrent; using System.Collections.Generic; +using ZeroLevel.Services.Serialization; namespace ZeroLevel.HNSW { @@ -7,9 +8,10 @@ namespace ZeroLevel.HNSW // HNSW vectorId + vector // Map object feature - vectorId public class HNSWMap + : IBinarySerializable { - private readonly ConcurrentDictionary _map = new ConcurrentDictionary(); - private readonly ConcurrentDictionary _reverse_map = new ConcurrentDictionary(); + private ConcurrentDictionary _map = new ConcurrentDictionary(); + private ConcurrentDictionary _reverse_map = new ConcurrentDictionary(); public void Append(TFeature feature, int vectorId) { @@ -40,5 +42,17 @@ namespace ZeroLevel.HNSW } } } + + public void Deserialize(IBinaryReader reader) + { + this._map = reader.ReadDictionaryAsConcurrent(); + this._reverse_map = reader.ReadDictionaryAsConcurrent(); + } + + public void Serialize(IBinaryWriter writer) + { + writer.WriteDictionary(this._map); + writer.WriteDictionary(this._reverse_map); + } } }