From e04130f15e890dc7bd46276341b62c5f7bff1603 Mon Sep 17 00:00:00 2001 From: Ogoun Date: Thu, 4 Apr 2024 16:08:50 +0300 Subject: [PATCH] fix engine for UNIX --- .gitignore | 112 ++++++------ .../bin/Debug/net8.0/Sleopok.App.deps.json | 26 +++ .../bin/Debug/net8.0/Sleopok.App.pdb | Bin 21064 -> 21152 bytes .../Debug/net8.0/Sleopok.App.AssemblyInfo.cs | 2 +- .../Sleopok.App.AssemblyInfoInputs.cache | 2 +- .../obj/Debug/net8.0/Sleopok.App.assets.cache | Bin 628 -> 353 bytes ...Sleopok.App.csproj.AssemblyReference.cache | Bin 676 -> 4217 bytes ...Sleopok.App.csproj.CoreCompileInputs.cache | 2 +- .../Sleopok.App.csproj.FileListAbsolute.txt | 6 + .../obj/Debug/net8.0/Sleopok.App.pdb | Bin 21064 -> 21152 bytes .../obj/Sleopok.App.csproj.nuget.dgspec.json | 77 +++++++- .../Sleopok.App/obj/project.assets.json | 46 ++--- .../Sleopok.App/obj/project.nuget.cache | 2 +- src/Sleopok/Sleopok.Engine/BaseIndexer.cs | 12 -- src/Sleopok/Sleopok.Engine/DataStorage.cs | 12 -- src/Sleopok/Sleopok.Engine/Engine.cs | 15 -- src/Sleopok/Sleopok.Engine/IIndexBuilder.cs | 12 -- src/Sleopok/Sleopok.Engine/IIndexReader.cs | 12 -- src/Sleopok/Sleopok.Engine/IndexOptions.cs | 9 - .../Sleopok.Engine/Models/IndexInfo.cs | 57 ++++++ .../Sleopok.Engine/Models/SleoField.cs | 10 ++ .../Models/SleoIndexAttribute.cs | 17 ++ .../{ => Services}/Compressor.cs | 17 +- .../Services/Indexes/IIndexBuilder.cs | 9 + .../Services/Indexes/IIndexReader.cs | 7 + .../Services/Indexes/IndexBuilder.cs | 55 ++++++ .../Services/Indexes/IndexReader.cs | 44 +++++ .../Services/Storage/DataStorage.cs | 166 ++++++++++++++++++ .../Services/Storage/IPartitionDataWriter.cs | 10 ++ .../Services/Storage/StoreMetadata.cs | 13 ++ .../Services/Storage/StoreRecord.cs | 14 ++ src/Sleopok/Sleopok.Engine/SleoEngine.cs | 41 +++++ .../Sleopok.Engine/Sleopok.Engine.csproj | 2 +- .../bin/Debug/net8.0/Sleopok.Engine.deps.json | 13 ++ .../bin/Debug/net8.0/Sleopok.Engine.pdb | Bin 10376 -> 17900 bytes .../net8.0/Sleopok.Engine.AssemblyInfo.cs | 2 +- .../Sleopok.Engine.AssemblyInfoInputs.cache | 2 +- .../Debug/net8.0/Sleopok.Engine.assets.cache | Bin 797 -> 228 bytes ...opok.Engine.csproj.AssemblyReference.cache | Bin 319 -> 3425 bytes ...opok.Engine.csproj.CoreCompileInputs.cache | 2 +- ...Sleopok.Engine.csproj.FileListAbsolute.txt | 4 + .../obj/Debug/net8.0/Sleopok.Engine.pdb | Bin 10376 -> 17900 bytes .../Sleopok.Engine.csproj.nuget.dgspec.json | 77 +++++++- .../obj/Sleopok.Engine.csproj.nuget.g.props | 10 -- .../Sleopok.Engine/obj/project.assets.json | 42 ++--- .../Sleopok.Engine/obj/project.nuget.cache | 2 +- src/Sleopok/Sleopok.Tests/Program.cs | 137 ++++++++++++++- .../bin/Debug/net8.0/Sleopok.Tests.deps.json | 26 +++ .../bin/Debug/net8.0/Sleopok.Tests.pdb | Bin 10536 -> 12460 bytes .../net8.0/Sleopok.Tests.AssemblyInfo.cs | 2 +- .../Sleopok.Tests.AssemblyInfoInputs.cache | 2 +- .../Debug/net8.0/Sleopok.Tests.assets.cache | Bin 628 -> 353 bytes ...eopok.Tests.csproj.AssemblyReference.cache | Bin 676 -> 4217 bytes ...eopok.Tests.csproj.CoreCompileInputs.cache | 2 +- .../Sleopok.Tests.csproj.FileListAbsolute.txt | 6 + .../obj/Debug/net8.0/Sleopok.Tests.pdb | Bin 10536 -> 12460 bytes .../Sleopok.Tests.csproj.nuget.dgspec.json | 77 +++++++- .../Sleopok.Tests/obj/project.assets.json | 46 ++--- .../Sleopok.Tests/obj/project.nuget.cache | 2 +- src/Sleopok/Sleopok.sln | 42 +++++ 60 files changed, 1029 insertions(+), 276 deletions(-) delete mode 100644 src/Sleopok/Sleopok.Engine/BaseIndexer.cs delete mode 100644 src/Sleopok/Sleopok.Engine/DataStorage.cs delete mode 100644 src/Sleopok/Sleopok.Engine/Engine.cs delete mode 100644 src/Sleopok/Sleopok.Engine/IIndexBuilder.cs delete mode 100644 src/Sleopok/Sleopok.Engine/IIndexReader.cs delete mode 100644 src/Sleopok/Sleopok.Engine/IndexOptions.cs create mode 100644 src/Sleopok/Sleopok.Engine/Models/IndexInfo.cs create mode 100644 src/Sleopok/Sleopok.Engine/Models/SleoField.cs create mode 100644 src/Sleopok/Sleopok.Engine/Models/SleoIndexAttribute.cs rename src/Sleopok/Sleopok.Engine/{ => Services}/Compressor.cs (70%) create mode 100644 src/Sleopok/Sleopok.Engine/Services/Indexes/IIndexBuilder.cs create mode 100644 src/Sleopok/Sleopok.Engine/Services/Indexes/IIndexReader.cs create mode 100644 src/Sleopok/Sleopok.Engine/Services/Indexes/IndexBuilder.cs create mode 100644 src/Sleopok/Sleopok.Engine/Services/Indexes/IndexReader.cs create mode 100644 src/Sleopok/Sleopok.Engine/Services/Storage/DataStorage.cs create mode 100644 src/Sleopok/Sleopok.Engine/Services/Storage/IPartitionDataWriter.cs create mode 100644 src/Sleopok/Sleopok.Engine/Services/Storage/StoreMetadata.cs create mode 100644 src/Sleopok/Sleopok.Engine/Services/Storage/StoreRecord.cs create mode 100644 src/Sleopok/Sleopok.Engine/SleoEngine.cs diff --git a/.gitignore b/.gitignore index a1d8904..27697d7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,66 +1,54 @@ -*.o -*.a -*.dSYM -*.csv -*.out -*.png -*.so -*.exe -*.dll -*.lib -*.dylib -*.pyc -mnist/ -data/ -caffe/ -grasp/ -images/ -opencv/ -convnet/ -decaf/ -submission/ -cfg/ -temp/ -build/darknet/* -build_*/ -ninja/ -ninja.zip -vcpkg_installed/ -!build/darknet/YoloWrapper.cs -.fuse* -*.weights -build/*.cmake -build/*.ninja -build/*.txt -build/*.json -build/CMakeFiles/ -build/detect_cuda_compute_capabilities.cu -build/.ninja_deps -build/.ninja_log -build/Makefile -*/vcpkg-manifest-install.log -build.log -__pycache__/ +# Bloody frontend +node_modules +bower_components + +# VSCode +.vscode -# OS Generated # -.DS_Store* -ehthumbs.db -Icon? -Thumbs.db -*.swp +# Ignore Visual Studio files +*.obj +*.pdb +*.user +*.aps +*.pch +*.vspscc +*_i.c +*_p.c +*.ncb +*.suo +*.tlb +*.cache +*.tlh +*.bak +*.cache +*.ilk +*.log +*.lib +*.sbr +*.scc +*.dbmdl +*.nupkg +*.p7s +*.sln.ide +*.onnx +[Bb]in +[Dd]ebug*/ +[Oo]bj/ +[Rr]elease*/ +_ReSharper*/ +[Tt]est[Rr]esult* +TestsResult.html +[Bb]uild[Ll]og.* +*.[Pp]ublish.xml +[Tt]humbs.db -# IDE generated # -.vs/ -.vscode/ +# NuGet +/packages/ +**/packages/* +!**/packages/build/ -# Managed by CMake -src/version.h +# Build +/artifacts/ -# Build artifacts -lib/ -share/ -include/darknet/ -uselib -uselib_track -darknet -vcpkg/ +.localhistory +.vs/ \ No newline at end of file diff --git a/src/Sleopok/Sleopok.App/bin/Debug/net8.0/Sleopok.App.deps.json b/src/Sleopok/Sleopok.App/bin/Debug/net8.0/Sleopok.App.deps.json index bf57bd7..2c963f0 100644 --- a/src/Sleopok/Sleopok.App/bin/Debug/net8.0/Sleopok.App.deps.json +++ b/src/Sleopok/Sleopok.App/bin/Debug/net8.0/Sleopok.App.deps.json @@ -7,9 +7,25 @@ "targets": { ".NETCoreApp,Version=v8.0": { "Sleopok.App/1.0.0": { + "dependencies": { + "Sleopok.Engine": "1.0.0" + }, "runtime": { "Sleopok.App.dll": {} } + }, + "Sleopok.Engine/1.0.0": { + "dependencies": { + "ZeroLevel": "3.4.0.8" + }, + "runtime": { + "Sleopok.Engine.dll": {} + } + }, + "ZeroLevel/3.4.0.8": { + "runtime": { + "ZeroLevel.dll": {} + } } } }, @@ -18,6 +34,16 @@ "type": "project", "serviceable": false, "sha512": "" + }, + "Sleopok.Engine/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ZeroLevel/3.4.0.8": { + "type": "project", + "serviceable": false, + "sha512": "" } } } \ No newline at end of file diff --git a/src/Sleopok/Sleopok.App/bin/Debug/net8.0/Sleopok.App.pdb b/src/Sleopok/Sleopok.App/bin/Debug/net8.0/Sleopok.App.pdb index e18a6fbbbf58aa0b9f1df19c609ec2e956aeb587..ed5a12e9054593390b6dcaf95634646cdc4c843e 100644 GIT binary patch delta 487 zcmX@HgmJ-A#t8)q3;Y=vl$~<&lNcBntmE@mte@}Yv03ch`5P~F5-dcX|C~5slkFiN zpdK=ORS-N2N4b3};8{JDPZ!b9hWRvycAMd&2oU*vYHVd#SF){W}KFBV%*^^yQRVODk zzaT$b&owVSGcQ#yB_{`HZO*>!(-{shFz`#KOu5-3>ANv>{uR{~*SBsi)A_EX5tUk$ z?~_`Vngdn6j_JWUh6Gjy-J%qkC9Foyi?fX@ZqD^z&FJ%n@c@G_Cx}o35e^_C z7DP0Fh?OAX7>IZbB3=OrKUNUI4lrVb3;Qtv z1(<=Dk>QjdE0AUbVs;=_U|?lP@lyxN2{5TMurTPeG%&I<82UFbvN4!!?qo`5Qs@a~ z(Ot=^W!d<^YRWXm9hV*MWz9^Ta$5hqjrVlJzzK&o3$Q9NFqXA6k92qIns311Enp$#HJKtv&k=mQZ`LBs|Su?s{T0}pQJts!WYgeTf<>#c9rRKyK>zU{o=vl<%WG2PrrIwiK8N@^Z zC4E4WdMPVs;?r02vL$ zTtLhX#K?eWvL>TNCT~DuNrq=$Kw@%sVtT3s(8>A`C+ovq1adN`V{vh6Nl0ZuDtl3B sUP)$dDyMUPL8VWAa$*ikNl|I4kV|TDNoHPRNoIataA^|AR9+Ml0K;=r5dZ)H diff --git a/src/Sleopok/Sleopok.App/obj/Debug/net8.0/Sleopok.App.csproj.AssemblyReference.cache b/src/Sleopok/Sleopok.App/obj/Debug/net8.0/Sleopok.App.csproj.AssemblyReference.cache index 076ae1e6cbc7260aa45f6c82dde8073006fef3a6..39e5779a7c250f07a1c4cc1f6e21066f97f55456 100644 GIT binary patch literal 4217 zcmcInO>Z1E7+ym`r4`>_DxVQZ<&t_*C5I9zf@-r#S0o{1x21|ks%9r|w$^&=!Q)xF zJE|wTk%i(tbYT zEdB&$LpcGlA#wyWq@OZ3GvisNA)yDk&@2IR-gMSn#f;5+Gh@7)@4o-&&Vv_!y|7-q zC~kzjYVrD?(ymNW1)1U32=<5j;jK$+e|%GgedZ99+<_@@@+7`LXZrA}vOUdk{)Hus zGkwW2>q^cc*2pSrM5}JL7cJ%v6JL0O8M@@cbPbnrb!GMHhlE_Dd%a;-D!87eCHNzI zkq)`ORpSd2r?3pxSr3$5rTo8L`|C$5|Hnl6tn&L#`CB#0H$w&GcxP2!c2xxaaryE@ z+pE+Bp!KFr4l|#r9i}8c?7)83A}Dc7~WM79WgPc^CxfW4%p-d+Pmjc zq5n$0;~2v|O%Gt4^GLOc|ANDJ5%CU%Gmg>TK*kf${!zGOSsKi}D1igWB+rd&yy-ek z7to-;lxor!$5JJQDZSyH6IdSItr_$0|zi&b+7K6tl^qv5=W&aYhF^ ziYG%A#r{Rr^On33SV(_*8%cOj8#wi~4>9BpBZ z><|8m1;3qedfV07-jtuUsB^xJ;C}w<TJwODhW zlt@Sq)2F{u|Gk{qDsrgCGfSfw*Hzvw#+78$VzK15SbHj>eSxH9ipANKp-H^iyHxr) zj0!{F)Qn?NYJ^*-JeNw%(W_D}4QDCf3Qs}dG#U+37kZcM7WXfD$Wr6+M(}kVFAY~&s07=APt0stQ- BKD+<` diff --git a/src/Sleopok/Sleopok.App/obj/Debug/net8.0/Sleopok.App.csproj.CoreCompileInputs.cache b/src/Sleopok/Sleopok.App/obj/Debug/net8.0/Sleopok.App.csproj.CoreCompileInputs.cache index fad575f..499bc26 100644 --- a/src/Sleopok/Sleopok.App/obj/Debug/net8.0/Sleopok.App.csproj.CoreCompileInputs.cache +++ b/src/Sleopok/Sleopok.App/obj/Debug/net8.0/Sleopok.App.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -a2e308b4ff36099adb277b73d1c52b3408af94527cd7ccc25e5a636640e0c29e +04a50ceab159ea786c56ba8ea60d0513868855b532afb5140660b2b597b148c8 diff --git a/src/Sleopok/Sleopok.App/obj/Debug/net8.0/Sleopok.App.csproj.FileListAbsolute.txt b/src/Sleopok/Sleopok.App/obj/Debug/net8.0/Sleopok.App.csproj.FileListAbsolute.txt index f2740c5..91bda6b 100644 --- a/src/Sleopok/Sleopok.App/obj/Debug/net8.0/Sleopok.App.csproj.FileListAbsolute.txt +++ b/src/Sleopok/Sleopok.App/obj/Debug/net8.0/Sleopok.App.csproj.FileListAbsolute.txt @@ -23,3 +23,9 @@ G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.App\obj\Debug\net8.0\refint\Sleo G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.App\obj\Debug\net8.0\Sleopok.App.pdb G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.App\obj\Debug\net8.0\Sleopok.App.genruntimeconfig.cache G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.App\obj\Debug\net8.0\ref\Sleopok.App.dll +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.App\bin\Debug\net8.0\Sleopok.Engine.dll +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.App\bin\Debug\net8.0\ZeroLevel.dll +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.App\bin\Debug\net8.0\Sleopok.Engine.pdb +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.App\bin\Debug\net8.0\ZeroLevel.pdb +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.App\obj\Debug\net8.0\Sleopok.App.csproj.AssemblyReference.cache +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.App\obj\Debug\net8.0\Sleopok..828B5A2C.Up2Date diff --git a/src/Sleopok/Sleopok.App/obj/Debug/net8.0/Sleopok.App.pdb b/src/Sleopok/Sleopok.App/obj/Debug/net8.0/Sleopok.App.pdb index e18a6fbbbf58aa0b9f1df19c609ec2e956aeb587..ed5a12e9054593390b6dcaf95634646cdc4c843e 100644 GIT binary patch delta 487 zcmX@HgmJ-A#t8)q3;Y=vl$~<&lNcBntmE@mte@}Yv03ch`5P~F5-dcX|C~5slkFiN zpdK=ORS-N2N4b3};8{JDPZ!b9hWRvycAMd&2oU*vYHVd#SF){W}KFBV%*^^yQRVODk zzaT$b&owVSGcQ#yB_{`HZO*>!(-{shFz`#KOu5-3>ANv>{uR{~*SBsi)A_EX5tUk$ z?~_`Vngdn6j_JWUh6Gjy-J%qkC9Foyi?fX@ZqD^z&FJ%n@c@G_Cx}o35e^_C z7DP0Fh?OAX7>IZbB3=OrKUNUI4lrVb3;Qtv z1(<=Dk>QjdE0AUbVs;=_U|?lP@lyxN2{5TMurTPeG%&I<82UFbvN4!!?qo`5Qs@a~ z(Ot=^W!d<^YRWXm9hV*MWz9^Ta$5hqjrVlJzzK&o3$Q9NFqXA6k92qIns311Enp$#HJKtv&k=mQZ`LBs|Su?s{T0} CreateBuilder(IndexOptions options) - { - return null; - } - - public IIndexReader CreateReader(IndexOptions options) - { - return null; - } - } -} diff --git a/src/Sleopok/Sleopok.Engine/IIndexBuilder.cs b/src/Sleopok/Sleopok.Engine/IIndexBuilder.cs deleted file mode 100644 index 4aed52c..0000000 --- a/src/Sleopok/Sleopok.Engine/IIndexBuilder.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Sleopok.Engine -{ - public interface IIndexBuilder - { - } -} diff --git a/src/Sleopok/Sleopok.Engine/IIndexReader.cs b/src/Sleopok/Sleopok.Engine/IIndexReader.cs deleted file mode 100644 index acc5871..0000000 --- a/src/Sleopok/Sleopok.Engine/IIndexReader.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Sleopok.Engine -{ - public interface IIndexReader - { - } -} diff --git a/src/Sleopok/Sleopok.Engine/IndexOptions.cs b/src/Sleopok/Sleopok.Engine/IndexOptions.cs deleted file mode 100644 index 1114d12..0000000 --- a/src/Sleopok/Sleopok.Engine/IndexOptions.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Sleopok.Engine -{ - public sealed class IndexOptions - { - public string IndexName { get; set; } - public string IndexPath { get; set; } - public Dictionary> Mapping { get; set; } - } -} diff --git a/src/Sleopok/Sleopok.Engine/Models/IndexInfo.cs b/src/Sleopok/Sleopok.Engine/Models/IndexInfo.cs new file mode 100644 index 0000000..b960a90 --- /dev/null +++ b/src/Sleopok/Sleopok.Engine/Models/IndexInfo.cs @@ -0,0 +1,57 @@ +using System.Reflection; +using ZeroLevel; +using ZeroLevel.Services.FileSystem; +using ZeroLevel.Services.Reflection; + +namespace Sleopok.Engine.Models +{ + internal class IndexInfo + { + private readonly Func _identityExtractor; + private readonly List _fields; + + public string GetId(T item) => _identityExtractor.Invoke(item); + + public IReadOnlyCollection Fields => _fields; + + public IndexInfo(Func identityExtractor) + { + _identityExtractor = identityExtractor; + _fields = new List(); + typeof(T).GetMembers( + BindingFlags.Public | + BindingFlags.FlattenHierarchy | + BindingFlags.GetField | + BindingFlags.GetProperty | + BindingFlags.Instance). + Do(members => + { + foreach (var member in members) + { + var sleoAttribute = member.GetCustomAttribute(); + if (sleoAttribute == null) continue; + + Func getter; + switch (member.MemberType) + { + case MemberTypes.Field: + getter = TypeGetterSetterBuilder.BuildGetter(member as FieldInfo); + break; + case MemberTypes.Property: + getter = TypeGetterSetterBuilder.BuildGetter(member as PropertyInfo); + break; + default: return; + } + var name = FSUtils.FileNameCorrection(string.IsNullOrWhiteSpace(sleoAttribute.Name) ? member.Name : sleoAttribute.Name); + _fields.Add(new SleoField + { + Boost = sleoAttribute.Boost, + Name = name, + Getter = getter, + ExactMatch = sleoAttribute.AvaliableForExactMatch + }); + } + }); + } + } +} diff --git a/src/Sleopok/Sleopok.Engine/Models/SleoField.cs b/src/Sleopok/Sleopok.Engine/Models/SleoField.cs new file mode 100644 index 0000000..02b559f --- /dev/null +++ b/src/Sleopok/Sleopok.Engine/Models/SleoField.cs @@ -0,0 +1,10 @@ +namespace Sleopok.Engine.Models +{ + internal sealed class SleoField + { + public string Name; + public float Boost; + public bool ExactMatch; + public Func Getter; + } +} diff --git a/src/Sleopok/Sleopok.Engine/Models/SleoIndexAttribute.cs b/src/Sleopok/Sleopok.Engine/Models/SleoIndexAttribute.cs new file mode 100644 index 0000000..2460239 --- /dev/null +++ b/src/Sleopok/Sleopok.Engine/Models/SleoIndexAttribute.cs @@ -0,0 +1,17 @@ +namespace Sleopok.Engine.Models +{ + public sealed class SleoIndexAttribute + : Attribute + { + public string Name { get; private set; } + public float Boost { get; private set; } = 1.0f; + public bool AvaliableForExactMatch { get; private set; } = false; + + public SleoIndexAttribute(string name, float boost = 1.0f, bool avaliableForExactMatch = false) + { + Name = name; + Boost = boost; + AvaliableForExactMatch = avaliableForExactMatch; + } + } +} diff --git a/src/Sleopok/Sleopok.Engine/Compressor.cs b/src/Sleopok/Sleopok.Engine/Services/Compressor.cs similarity index 70% rename from src/Sleopok/Sleopok.Engine/Compressor.cs rename to src/Sleopok/Sleopok.Engine/Services/Compressor.cs index 4c0fa4a..f0bd62b 100644 --- a/src/Sleopok/Sleopok.Engine/Compressor.cs +++ b/src/Sleopok/Sleopok.Engine/Services/Compressor.cs @@ -1,9 +1,9 @@ using System.IO.Compression; -using System.Text; +using ZeroLevel.Services.Serialization; -namespace Sleopok.Engine +namespace Sleopok.Engine.Services { - internal static class Compressor + public static class Compressor { private static void CopyTo(Stream src, Stream dest) { @@ -15,6 +15,17 @@ namespace Sleopok.Engine } } + public static byte[] Compress(string[] documents) + { + return Compress(MessageSerializer.SerializeCompatible(documents)); + } + + public static string[] DecompressToDocuments(byte[] data) + { + var bytes = Decompress(data); + return MessageSerializer.DeserializeCompatible(bytes); + } + public static byte[] Compress(byte[] data) { using (var msi = new MemoryStream(data)) diff --git a/src/Sleopok/Sleopok.Engine/Services/Indexes/IIndexBuilder.cs b/src/Sleopok/Sleopok.Engine/Services/Indexes/IIndexBuilder.cs new file mode 100644 index 0000000..7ee6428 --- /dev/null +++ b/src/Sleopok/Sleopok.Engine/Services/Indexes/IIndexBuilder.cs @@ -0,0 +1,9 @@ +namespace Sleopok.Engine.Services.Indexes +{ + public interface IIndexBuilder + : IDisposable + { + Task Write(IEnumerable batch); + Task Complete(); + } +} diff --git a/src/Sleopok/Sleopok.Engine/Services/Indexes/IIndexReader.cs b/src/Sleopok/Sleopok.Engine/Services/Indexes/IIndexReader.cs new file mode 100644 index 0000000..44ef7ba --- /dev/null +++ b/src/Sleopok/Sleopok.Engine/Services/Indexes/IIndexReader.cs @@ -0,0 +1,7 @@ +namespace Sleopok.Engine.Services.Indexes +{ + public interface IIndexReader + { + Task> Search(string[] tokens, bool exactMatch); + } +} diff --git a/src/Sleopok/Sleopok.Engine/Services/Indexes/IndexBuilder.cs b/src/Sleopok/Sleopok.Engine/Services/Indexes/IndexBuilder.cs new file mode 100644 index 0000000..836180a --- /dev/null +++ b/src/Sleopok/Sleopok.Engine/Services/Indexes/IndexBuilder.cs @@ -0,0 +1,55 @@ +using Sleopok.Engine.Models; +using Sleopok.Engine.Services.Storage; + +namespace Sleopok.Engine.Services.Indexes +{ + internal sealed class IndexBuilder + : IIndexBuilder + { + private readonly DataStorage _storage; + private readonly IndexInfo _indexInfo; + private readonly Dictionary Indexers = new Dictionary(); + public IndexBuilder(DataStorage storage, IndexInfo indexInfo) + { + _storage = storage; + _indexInfo = indexInfo; + foreach (var field in indexInfo.Fields) + { + Indexers[field.Name] = _storage.GetWriter(field.Name); + } + } + + public async Task Complete() + { + foreach (var i in Indexers) + { + await i.Value.Complete(); + i.Value.Dispose(); + } + } + + public async Task Write(IEnumerable batch) + { + foreach (var doc in batch) + { + var doc_id = _indexInfo.GetId(doc); + foreach (var field in _indexInfo.Fields) + { + var value = field.Getter(doc).ToString(); + if (string.IsNullOrWhiteSpace(value) == false) + { + foreach (var t in value.Split(' ')) + { + await Indexers[field.Name].Write(t, doc_id); + } + } + } + } + } + + public void Dispose() + { + Complete().Wait(); + } + } +} diff --git a/src/Sleopok/Sleopok.Engine/Services/Indexes/IndexReader.cs b/src/Sleopok/Sleopok.Engine/Services/Indexes/IndexReader.cs new file mode 100644 index 0000000..9227e2c --- /dev/null +++ b/src/Sleopok/Sleopok.Engine/Services/Indexes/IndexReader.cs @@ -0,0 +1,44 @@ +using Sleopok.Engine.Models; +using Sleopok.Engine.Services.Storage; + +namespace Sleopok.Engine.Services.Indexes +{ + internal sealed class IndexReader + : IIndexReader + { + private readonly DataStorage _storage; + private readonly IndexInfo _indexInfo; + public IndexReader(DataStorage storage, IndexInfo indexInfo) + { + _storage = storage; + _indexInfo = indexInfo; + } + + public async Task> Search(string[] tokens, bool exactMatch) + { + var documents = new Dictionary(); + + foreach (var field in _indexInfo.Fields) + { + if (exactMatch && field.ExactMatch == false) + continue; + var docs = await _storage.GetDocuments(field.Name, tokens, field.Boost, exactMatch); + foreach (var doc in docs) + { + if (doc.Value > 0.0001f) + { + if (documents.ContainsKey(doc.Key) == false) + { + documents[doc.Key] = doc.Value; + } + else + { + documents[doc.Key] += doc.Value; + } + } + } + } + return documents; + } + } +} diff --git a/src/Sleopok/Sleopok.Engine/Services/Storage/DataStorage.cs b/src/Sleopok/Sleopok.Engine/Services/Storage/DataStorage.cs new file mode 100644 index 0000000..8af7607 --- /dev/null +++ b/src/Sleopok/Sleopok.Engine/Services/Storage/DataStorage.cs @@ -0,0 +1,166 @@ +using ZeroLevel.Services.HashFunctions; +using ZeroLevel.Services.PartitionStorage; + +namespace Sleopok.Engine.Services.Storage +{ + public sealed class DataStorage + { + private readonly IStore _store; + + private class DateSourceWriter : + IPartitionDataWriter + { + private readonly IStorePartitionBuilder _builder; + public DateSourceWriter(IStorePartitionBuilder builder) + { + _builder = builder; + } + + public async Task Complete() + { + _builder.CompleteAdding(); + await _builder.Compress(); + await _builder.RebuildIndex(); + _builder.Dispose(); + } + + public async Task Write(string host, string document) + { + await _builder.Store(host, document); + } + + public long GetTotalRecords() => _builder.TotalRecords; + + public void Dispose() + { + _builder.Dispose(); + } + } + + public DataStorage(string rootFolder) + { + var serializers = new StoreSerializers( + async (w, n) => await w.WriteStringAsync(n), + async (w, n) => await w.WriteStringAsync(n), + async (w, n) => await w.WriteBytesAsync(n), + + async (r) => { try { return new DeserializeResult(true, await r.ReadStringAsync()); } catch { return new DeserializeResult(false, string.Empty); } }, + async (r) => { try { return new DeserializeResult(true, await r.ReadStringAsync()); } catch { return new DeserializeResult(false, string.Empty); } }, + async (r) => { try { return new DeserializeResult(true, await r.ReadBytesAsync()); } catch { return new DeserializeResult(false, new byte[0]); } }); + + var options = new StoreOptions + { + Index = new IndexOptions + { + Enabled = true, + StepType = IndexStepType.Step, + StepValue = 32, + EnableIndexInMemoryCachee = false + }, + RootFolder = rootFolder, + FilePartition = new StoreFilePartition("Token hash", (token, _) => Math.Abs(StringHash.DotNetFullHash(token) % 47).ToString()), + MergeFunction = list => + { + return Compressor.Compress(list.OrderBy(c => c).ToArray()); + }, + Partitions = new List> + { + new StoreCatalogPartition("Field", m => m.Field) + }, + KeyComparer = (left, right) => string.Compare(left, right, true), + ThreadSafeWriting = true + }; + _store = new Store(options, serializers); + } + + public IPartitionDataWriter GetWriter(string field) + { + return new DateSourceWriter(_store.CreateBuilder(new StoreMetadata { Field = field })); + } + + private class PositionDocScore + { + private float score = 0.0f; + private int _last_position = -1; + private int count = 0; + + public float GetScore(int total, bool exactMatch) + { + if (exactMatch) + { + return (count == total) ? 1.0f : 0f; + } + return (score / (float)total) * count; + } + + public void Increase(int position) + { + if (position == 0) + { + score = 1.0f; + } + else + { + var diff = position - _last_position; + score += 1.0f / diff; + } + _last_position = position; + count++; + } + } + + public async Task> GetDocuments(string field, string[] tokens, float boost, bool exactMatch) + { + var documents = new Dictionary(); + var accessor = _store.CreateAccessor(new StoreMetadata { Field = field }); + if (accessor != null) + { + using (accessor) + { + int step = 0; + foreach (var token in tokens) + { + var sr = await accessor.Find(token); + if (sr.Success) + { + foreach (var doc in Compressor.DecompressToDocuments(sr.Value)) + { + if (false == documents.ContainsKey(doc)) + { + documents.Add(doc, new PositionDocScore()); + } + documents[doc].Increase(step); + } + } + } + } + } + return documents.ToDictionary(d => d.Key, d => boost * d.Value.GetScore(tokens.Length, exactMatch)); + } + + public async Task Dump(string key, Stream stream) + { + using (TextWriter writer = new StreamWriter(stream)) + { + await foreach (var i in _store.Bypass(new StoreMetadata { Field = key })) + { + writer.WriteLine(i.Key); + writer.WriteLine(string.Join(' ', Compressor.DecompressToDocuments(i.Value))); + } + } + } + + public int HasData(string field) + { + var partition = _store.CreateAccessor(new StoreMetadata { Field = field }); + if (partition != null) + { + using (partition) + { + return partition.CountDataFiles(); + } + } + return 0; + } + } +} diff --git a/src/Sleopok/Sleopok.Engine/Services/Storage/IPartitionDataWriter.cs b/src/Sleopok/Sleopok.Engine/Services/Storage/IPartitionDataWriter.cs new file mode 100644 index 0000000..a9d1fc6 --- /dev/null +++ b/src/Sleopok/Sleopok.Engine/Services/Storage/IPartitionDataWriter.cs @@ -0,0 +1,10 @@ +namespace Sleopok.Engine.Services.Storage +{ + public interface IPartitionDataWriter + : IDisposable + { + Task Write(string token, string document); + Task Complete(); + long GetTotalRecords(); + } +} diff --git a/src/Sleopok/Sleopok.Engine/Services/Storage/StoreMetadata.cs b/src/Sleopok/Sleopok.Engine/Services/Storage/StoreMetadata.cs new file mode 100644 index 0000000..6dda409 --- /dev/null +++ b/src/Sleopok/Sleopok.Engine/Services/Storage/StoreMetadata.cs @@ -0,0 +1,13 @@ +namespace Sleopok.Engine.Services.Storage +{ + /// + /// Мета + /// + public sealed class StoreMetadata + { + /// + /// Поле документа + /// + public string Field { get; set; } + } +} diff --git a/src/Sleopok/Sleopok.Engine/Services/Storage/StoreRecord.cs b/src/Sleopok/Sleopok.Engine/Services/Storage/StoreRecord.cs new file mode 100644 index 0000000..62f4b29 --- /dev/null +++ b/src/Sleopok/Sleopok.Engine/Services/Storage/StoreRecord.cs @@ -0,0 +1,14 @@ +namespace Sleopok.Engine.Services.Storage +{ + public sealed class StoreRecord + { + /// + /// Токен / ключ + /// + public string Token { get; set; } + /// + /// Идентификаторы документов / значение + /// + public string[] Documents { get; set; } + } +} diff --git a/src/Sleopok/Sleopok.Engine/SleoEngine.cs b/src/Sleopok/Sleopok.Engine/SleoEngine.cs new file mode 100644 index 0000000..2fdc9f7 --- /dev/null +++ b/src/Sleopok/Sleopok.Engine/SleoEngine.cs @@ -0,0 +1,41 @@ +using Sleopok.Engine.Models; +using Sleopok.Engine.Services.Indexes; +using Sleopok.Engine.Services.Storage; +using ZeroLevel; + +namespace Sleopok.Engine +{ + public class SleoEngine + { + private readonly DataStorage _storage; + private readonly IndexInfo _indexInfo; + public SleoEngine(string indexFolder, Func identityExtractor) + { + _storage = new DataStorage(indexFolder); + _indexInfo = new IndexInfo(identityExtractor); + } + + public bool HasData() + { + var total = 0; + // healthy + foreach (var field in _indexInfo.Fields) + { + var count = _storage.HasData(field.Name); + Log.Debug($"Field: {field.Name}: {count} files"); + total += count; + } + return total > 0; + } + + public IIndexBuilder CreateBuilder() + { + return new IndexBuilder(_storage, _indexInfo); + } + + public IIndexReader CreateReader() + { + return new IndexReader(_storage, _indexInfo); + } + } +} diff --git a/src/Sleopok/Sleopok.Engine/Sleopok.Engine.csproj b/src/Sleopok/Sleopok.Engine/Sleopok.Engine.csproj index a53ea04..2b305c8 100644 --- a/src/Sleopok/Sleopok.Engine/Sleopok.Engine.csproj +++ b/src/Sleopok/Sleopok.Engine/Sleopok.Engine.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/Sleopok/Sleopok.Engine/bin/Debug/net8.0/Sleopok.Engine.deps.json b/src/Sleopok/Sleopok.Engine/bin/Debug/net8.0/Sleopok.Engine.deps.json index a457fd3..14d84d8 100644 --- a/src/Sleopok/Sleopok.Engine/bin/Debug/net8.0/Sleopok.Engine.deps.json +++ b/src/Sleopok/Sleopok.Engine/bin/Debug/net8.0/Sleopok.Engine.deps.json @@ -7,9 +7,17 @@ "targets": { ".NETCoreApp,Version=v8.0": { "Sleopok.Engine/1.0.0": { + "dependencies": { + "ZeroLevel": "3.4.0.8" + }, "runtime": { "Sleopok.Engine.dll": {} } + }, + "ZeroLevel/3.4.0.8": { + "runtime": { + "ZeroLevel.dll": {} + } } } }, @@ -18,6 +26,11 @@ "type": "project", "serviceable": false, "sha512": "" + }, + "ZeroLevel/3.4.0.8": { + "type": "project", + "serviceable": false, + "sha512": "" } } } \ No newline at end of file diff --git a/src/Sleopok/Sleopok.Engine/bin/Debug/net8.0/Sleopok.Engine.pdb b/src/Sleopok/Sleopok.Engine/bin/Debug/net8.0/Sleopok.Engine.pdb index d9250954091f95fd1f413b176a07765b6200e043..378544b84b01342e2d8421d4ced135b0b3fb096e 100644 GIT binary patch delta 8020 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 VV+~quv!w-gCk1vp0w-aS=%2H_=(Yd= delta 440 zcmaFU&Daq*L8ab-fq_9eASDS%G3){26cE3TfkAKFF}MJg?XaXPouwFDS`56eT>Vc#(BGP?*78gn@w* zNCTBK@G>yeGcZ9pJV2To$_7b-08kFfTnrIlXaGA3BnZOHK~b#nIQ*i#J#i?%$?C^F7mXV80h-2)TZ-P1o#mJ=}I<$G(XCc~5$o^Vww)`vgD2bN jUV8jWBMU~xCgsU?g2jv`n>Pz?U}VhQoFbg7%*X%$5MN%g diff --git a/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.AssemblyInfo.cs b/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.AssemblyInfo.cs index 77cbf69..8f7361a 100644 --- a/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.AssemblyInfo.cs +++ b/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Sleopok.Engine")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7640df5cc809fe8cc6f1d9b9a6217212fefaed1f")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+fedfec2a4cc01029334d8899a839502b8990face")] [assembly: System.Reflection.AssemblyProductAttribute("Sleopok.Engine")] [assembly: System.Reflection.AssemblyTitleAttribute("Sleopok.Engine")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.AssemblyInfoInputs.cache b/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.AssemblyInfoInputs.cache index 39897b7..bb0f264 100644 --- a/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.AssemblyInfoInputs.cache +++ b/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.AssemblyInfoInputs.cache @@ -1 +1 @@ -f426e6a434a2fc8387e3d537276d02f6cf81d1a9ad7d6c180ee6ed07027c56e6 +77e8df075c7d1f0f3dc236560a0047f015aa2ee269d969915745f95d3be4c2de diff --git a/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.assets.cache b/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.assets.cache index 0102916619c8647efba9e13b7753dd62ad17a103..dc421e4196ecb664bd206cd6234bbdeb611d4091 100644 GIT binary patch delta 111 zcmbQs_JlDoz}wxChk=1Xa__t+P9J_}8ocNW{PTIE;@j!rrcz72XR*IcbMlZ)IQsyo OhA1$ZnXz63n@Ru%^A(!_ literal 797 zcmb_a%`QVh6fSPnMg5gTBBC1`i`xc~vJ*dbLFNo04!N} z4^Lp>0c=^?IVY~FZfu<7%gLN`<~wuFH-+{5Vs9)KdvKq|U+p-Iy|_0Am)B1p&sQgF z_m3m*Z+9y%=eJV>?N}698+vzXf$eDsG~2GI&}WVxR=}_tFP-uVXm$aCl5hr+%{a48 z*2ys`j+hT-&dIVvOm0xp@uci%Vx=Z@wh-|s-s-5k-C&?BMFty@Ow^F>cShL+dgARu z*obaK4}vC7BB<}g9}{6oERQvXKve=>O|J?GIz2g^JI~EcPS3MVQ3{k+Ws}|)I^;54 zG@&OHD<1OzJhm0)!4#tP5ZAZ;?>1>-GGcArW*^4-5d(-p#1JBdXtrTI^fkZL^?sI} zYEJB<_(J)KXx+&IH^;6YO*o2bXTH?VG?XE=tu0=KM07XhYPVXGq9ly0FGE@Q;Kf(D z)X=p9TFEo;tlc04i@39Y=yTEf?fF|)gb@? diff --git a/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.csproj.AssemblyReference.cache b/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.csproj.AssemblyReference.cache index 48185b624ed5bc0f09c6560d739871021ff427b1..82c25f01c1894355050346d668deb87e57ac1951 100644 GIT binary patch literal 3425 zcmb_fOK%e~5ROHKN-N$km1hJ8F2!5a9!jJNs-$Tn+7gnqR8=Ij*-TR_UVHI+LsJgr z${*k_aOK9GGaR{r#LwVXY-io35Ftg5rFfI3OUd7iaGCyir1s!X)v=HL{Cxi3>B|O<@l7QV(>EP z=@EnJ>?VkqaJDdu=kN@kpU&nJDiZ+<3=%1PI-M;i4N8J%(5>+{umzSV98K$<-Vi!h z?Zy&9TuGQDAt39AzNUX6?UP>GC$;PAK0SGLaPj*@&ir9Egf69cc}^(=QgMr&F&~`d zh^ruoPszTo;c;1zkVw)2cSBcGL+c<%348nBnBY8TK_Y}oOXu)pkKn_IGljUun?OhD z!1dHZZC8NbB&>yd-<+vi;8nt2LIq+@6J0gVbZt%>XpnEXXqVUy7ojOiXLwtQrRS5inr{<;Y|5#irV8l z6x`Rhmk+-^{Q0845^b*aM_2VkHM0aG5WdNjtnMpAQ5{s%c0^M2lzh5p>i@@?qR~*P z<~nEMHpYEoG{RxYw%BxX#3iOk^GFS69iocFnZ1?Lm(VZ;y&(xzqBIolpv<#Us{2ac zxK!&#pq_9CgmPmjBZG3rirvZng||thYkVm9L4C{)3k6^Lxs3G%rRkuQWZiB&HxSIXf{uwK%3KwJ1L) zwJbF!##qlp&p^*2CMPo~CNH(bOwS-D3MlCVlGIDd$pM?kz^lMf-g|pusHsz6T4qkF zmA<~dvz0#B27Ry%`VbrRVK(T)ZP16>pbxY`A7sPCBQg9yCvug6EH*YUHnd~_04c;e A!~g&Q diff --git a/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.csproj.CoreCompileInputs.cache b/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.csproj.CoreCompileInputs.cache index 7fb3bf5..1fdcbd6 100644 --- a/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.csproj.CoreCompileInputs.cache +++ b/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -5da1357c9eefef2d7ad7c9bb0c603c0f7ef9b42dc2cecea34ee721a98d798d52 +41bfc06d75e1228dd2a09cea218be6ef02f4290e829a20aa336f3a48d826fcfc diff --git a/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.csproj.FileListAbsolute.txt b/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.csproj.FileListAbsolute.txt index de59294..128112e 100644 --- a/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.csproj.FileListAbsolute.txt +++ b/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.csproj.FileListAbsolute.txt @@ -9,3 +9,7 @@ G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Engine\obj\Debug\net8.0\Sleopok. G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Engine\obj\Debug\net8.0\refint\Sleopok.Engine.dll G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Engine\obj\Debug\net8.0\Sleopok.Engine.pdb G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Engine\obj\Debug\net8.0\ref\Sleopok.Engine.dll +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Engine\obj\Debug\net8.0\Sleopok.Engine.csproj.AssemblyReference.cache +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Engine\bin\Debug\net8.0\ZeroLevel.dll +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Engine\bin\Debug\net8.0\ZeroLevel.pdb +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Engine\obj\Debug\net8.0\Sleopok..B842D9EA.Up2Date diff --git a/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.pdb b/src/Sleopok/Sleopok.Engine/obj/Debug/net8.0/Sleopok.Engine.pdb index d9250954091f95fd1f413b176a07765b6200e043..378544b84b01342e2d8421d4ced135b0b3fb096e 100644 GIT binary patch delta 8020 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 VV+~quv!w-gCk1vp0w-aS=%2H_=(Yd= delta 440 zcmaFU&Daq*L8ab-fq_9eASDS%G3){26cE3TfkAKFF}MJg?XaXPouwFDS`56eT>Vc#(BGP?*78gn@w* zNCTBK@G>yeGcZ9pJV2To$_7b-08kFfTnrIlXaGA3BnZOHK~b#nIQ*i#J#i?%$?C^F7mXV80h-2)TZ-P1o#mJ=}I<$G(XCc~5$o^Vww)`vgD2bN jUV8jWBMU~xCgsU?g2jv`n>Pz?U}VhQoFbg7%*X%$5MN%g diff --git a/src/Sleopok/Sleopok.Engine/obj/Sleopok.Engine.csproj.nuget.dgspec.json b/src/Sleopok/Sleopok.Engine/obj/Sleopok.Engine.csproj.nuget.dgspec.json index 98f9a8d..5cbdf4a 100644 --- a/src/Sleopok/Sleopok.Engine/obj/Sleopok.Engine.csproj.nuget.dgspec.json +++ b/src/Sleopok/Sleopok.Engine/obj/Sleopok.Engine.csproj.nuget.dgspec.json @@ -4,6 +4,71 @@ "G:\\Documents\\GitHub\\sleopok\\src\\Sleopok\\Sleopok.Engine\\Sleopok.Engine.csproj": {} }, "projects": { + "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj": { + "version": "3.4.0.8", + "restore": { + "projectUniqueName": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj", + "projectName": "ZeroLevel", + "projectPath": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj", + "packagesPath": "C:\\Users\\Ogoun\\.nuget\\packages\\", + "outputPath": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Ogoun\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.200/PortableRuntimeIdentifierGraph.json" + } + } + }, "G:\\Documents\\GitHub\\sleopok\\src\\Sleopok\\Sleopok.Engine\\Sleopok.Engine.csproj": { "version": "1.0.0", "restore": { @@ -32,7 +97,11 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "projectReferences": {} + "projectReferences": { + "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj": { + "projectPath": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj" + } + } } }, "warningProperties": { @@ -49,12 +118,6 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "dependencies": { - "ZeroLevel": { - "target": "Package", - "version": "[3.4.0.8, )" - } - }, "imports": [ "net461", "net462", diff --git a/src/Sleopok/Sleopok.Engine/obj/Sleopok.Engine.csproj.nuget.g.props b/src/Sleopok/Sleopok.Engine/obj/Sleopok.Engine.csproj.nuget.g.props index 27fd830..02d31c6 100644 --- a/src/Sleopok/Sleopok.Engine/obj/Sleopok.Engine.csproj.nuget.g.props +++ b/src/Sleopok/Sleopok.Engine/obj/Sleopok.Engine.csproj.nuget.g.props @@ -13,14 +13,4 @@ - - - ZeroLevel - 3.4.0.8 - Content - false - False - zero.ico - - \ No newline at end of file diff --git a/src/Sleopok/Sleopok.Engine/obj/project.assets.json b/src/Sleopok/Sleopok.Engine/obj/project.assets.json index 28920d5..8716b61 100644 --- a/src/Sleopok/Sleopok.Engine/obj/project.assets.json +++ b/src/Sleopok/Sleopok.Engine/obj/project.assets.json @@ -3,38 +3,22 @@ "targets": { "net8.0": { "ZeroLevel/3.4.0.8": { - "type": "package", + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", "compile": { - "lib/net6.0/ZeroLevel.dll": {} + "bin/placeholder/ZeroLevel.dll": {} }, "runtime": { - "lib/net6.0/ZeroLevel.dll": {} - }, - "contentFiles": { - "contentFiles/any/net6.0/zero.ico": { - "buildAction": "Content", - "codeLanguage": "any", - "copyToOutput": false - } + "bin/placeholder/ZeroLevel.dll": {} } } } }, "libraries": { "ZeroLevel/3.4.0.8": { - "sha512": "zPyHKeeX9M96BPqXcS+MKnUbF1EWPUusz4i2Ij9UiF+HTU85MtCKW3MQZx2O6vVtRtRbD20OoKGwn7/vvXFTgw==", - "type": "package", - "path": "zerolevel/3.4.0.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "content/zero.ico", - "contentFiles/any/net6.0/zero.ico", - "lib/net6.0/ZeroLevel.dll", - "zero.png", - "zerolevel.3.4.0.8.nupkg.sha512", - "zerolevel.nuspec" - ] + "type": "project", + "path": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj", + "msbuildProject": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj" } }, "projectFileDependencyGroups": { @@ -74,7 +58,11 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "projectReferences": {} + "projectReferences": { + "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj": { + "projectPath": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj" + } + } } }, "warningProperties": { @@ -91,12 +79,6 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "dependencies": { - "ZeroLevel": { - "target": "Package", - "version": "[3.4.0.8, )" - } - }, "imports": [ "net461", "net462", diff --git a/src/Sleopok/Sleopok.Engine/obj/project.nuget.cache b/src/Sleopok/Sleopok.Engine/obj/project.nuget.cache index b5c4693..887aad2 100644 --- a/src/Sleopok/Sleopok.Engine/obj/project.nuget.cache +++ b/src/Sleopok/Sleopok.Engine/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "880PzxH53Ahr72uy6Pp63ie2s9+KLoxGS6Fer5K7TH4n18bLP8oxr0T3yuxBfSUzk6KjY9S0DRwHSzjW2hcO9g==", + "dgSpecHash": "4HWaMlhWwDRMgMlaabFye9fQhdCxurzS/2Lp4upBhQDnDz9xaw6qwUb3S+rAs+HHl9VGGCU73F9hiJCgIpjhQg==", "success": true, "projectFilePath": "G:\\Documents\\GitHub\\sleopok\\src\\Sleopok\\Sleopok.Engine\\Sleopok.Engine.csproj", "expectedPackageFiles": [ diff --git a/src/Sleopok/Sleopok.Tests/Program.cs b/src/Sleopok/Sleopok.Tests/Program.cs index fa3a5da..f88955f 100644 --- a/src/Sleopok/Sleopok.Tests/Program.cs +++ b/src/Sleopok/Sleopok.Tests/Program.cs @@ -1,10 +1,141 @@ -namespace Sleopok.Tests +using Sleopok.Engine; +using Sleopok.Engine.Models; +using Sleopok.Engine.Services; +using Sleopok.Engine.Services.Storage; +using ZeroLevel.Services.Semantic; +using ZeroLevel.Services.Serialization; + +namespace Sleopok.Tests { internal class Program { - static void Main(string[] args) + public sealed class BookDocument { - Console.WriteLine("Hello, World!"); + public string Id { get; set; } + + [SleoIndex("title", 200.0f)] + public string Title { get; set; } + + [SleoIndex("titlelm", 100.0f)] + public string TitleLemmas { get; set; } + + [SleoIndex("author", 10.0f)] + public string Author { get; set; } + + [SleoIndex("genre", 1.0f)] + public string Genre { get; set; } + } + + private static Dictionary _titles = new Dictionary + { + { "66056bc0481e83af64c55022", "Документ без названия" }, + { "6605698d481e83af64c45ad7", "На развилке дорог. Часть 2"}, + { "660581bc481e83af64cb8b4d", "Паниклав"}, + { "66057aa2481e83af64c9bb11", "Князь. Война магов (сборник)"}, + { "66057f75481e83af64cb04f7", "Антология севетского детектива-8. Компиляция. Книги 1-17"}, + { "66057bd4481e83af64ca0779", "Вор черной масти"}, + { "66057247481e83af64c76860", "Выбор"}, + { "66056807481e83af64c3a64f", "Последняя лекция"}, + { "66057f13481e83af64caed5d", "Оружие Круппа. История династии пушечных королей"}, + { "66057a37481e83af64c9a14b", "Месть Черного Дракона"}, + { "660588e8481e83af64cd2d3e", "Мгла над старыми могилами"}, + { "66056e88481e83af64c64e81", "Кровь и железо"}, + { "66057a8e481e83af64c9b673", "Маленькая страна"}, + { "6605687d481e83af64c3e360", "Санкт-Петербург – история в преданиях и легендах"}, + { "66057987481e83af64c9770c", "Контракт на рабство"}, + { "66059052481e83af64cf5e31", "Агент космического сыска"}, + { "660580f9481e83af64cb61c9", "Две жизни Алессы Коэн"}, + { "66056807481e84af64c3a64f", "Последняя история"}, + { "66057f13481e85af64caed5d", "История Китая"}, + { "66057a37481e86af64c9a14b", "Время Черного Дракона"}, + { "660588e8481e87af64cd2d3e", "Страна которой нет"}, + }; + + static async Task Main(string[] args) + { + // TestCompression(); + // await FillOneFieldIndex(); + // await TestSearch(); + await TestEngine(); + } + + static async Task TestEngine() + { + var engine = new SleoEngine(@"H:\Test", b => b.Id); + using (var builder = engine.CreateBuilder()) + { + builder.Write(new[] + { + new BookDocument{ Id = "01", Title = "Страж птица", }, + new BookDocument{ Id = "02" }, + new BookDocument{ Id = "03" }, + new BookDocument{ Id = "04" }, + }); + } + } + + static void TestCompression() + { + var strings = new string[] + { + string.Empty, + "doc1", + "doc2", + "", + " ", + "\r\n", + "last", + "doc3", + "doc4", + "doc5", + "doc6", + "doc7", + "doc8", + "doc9", + "doc10", + }; + + var clearbytes = MessageSerializer.SerializeCompatible(strings).Length; + var compressed = Compressor.Compress(strings); + Console.WriteLine($"{compressed.Length} / {clearbytes} bytes"); + + var decomressed = Compressor.DecompressToDocuments(compressed); + int index = 0; + foreach (var s in decomressed) + { + if (!(string.IsNullOrEmpty(s) && string.IsNullOrEmpty(strings[index])) && 0 != string.CompareOrdinal(strings[index], s)) + { + Console.WriteLine($"Got {s}. Expected {strings[index]}"); + } + index++; + } + } + + static async Task FillOneFieldIndex() + { + var store = new DataStorage(@"H:\TEST"); + using (var writer = store.GetWriter("title")) + { + foreach (var kv in _titles) + { + var tokens = WordTokenizer.Tokenize(kv.Value); + foreach (var t in tokens) + { + await writer.Write(t, kv.Key); + } + } + await writer.Complete(); + } + } + + static async Task TestSearch() + { + var store = new DataStorage(@"H:\TEST"); + var docs = await store.GetDocuments("title", new string[] { "кровь", "страна", "железо", "история", "оружие" }, 1.0f, false); + foreach (var kv in docs.OrderByDescending(kv => kv.Value)) + { + Console.WriteLine($"[{kv.Key}: {kv.Value}] {_titles[kv.Key]}"); + } } } } diff --git a/src/Sleopok/Sleopok.Tests/bin/Debug/net8.0/Sleopok.Tests.deps.json b/src/Sleopok/Sleopok.Tests/bin/Debug/net8.0/Sleopok.Tests.deps.json index 5152259..53a7675 100644 --- a/src/Sleopok/Sleopok.Tests/bin/Debug/net8.0/Sleopok.Tests.deps.json +++ b/src/Sleopok/Sleopok.Tests/bin/Debug/net8.0/Sleopok.Tests.deps.json @@ -7,9 +7,25 @@ "targets": { ".NETCoreApp,Version=v8.0": { "Sleopok.Tests/1.0.0": { + "dependencies": { + "Sleopok.Engine": "1.0.0" + }, "runtime": { "Sleopok.Tests.dll": {} } + }, + "Sleopok.Engine/1.0.0": { + "dependencies": { + "ZeroLevel": "3.4.0.8" + }, + "runtime": { + "Sleopok.Engine.dll": {} + } + }, + "ZeroLevel/3.4.0.8": { + "runtime": { + "ZeroLevel.dll": {} + } } } }, @@ -18,6 +34,16 @@ "type": "project", "serviceable": false, "sha512": "" + }, + "Sleopok.Engine/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ZeroLevel/3.4.0.8": { + "type": "project", + "serviceable": false, + "sha512": "" } } } \ No newline at end of file diff --git a/src/Sleopok/Sleopok.Tests/bin/Debug/net8.0/Sleopok.Tests.pdb b/src/Sleopok/Sleopok.Tests/bin/Debug/net8.0/Sleopok.Tests.pdb index c1b56d3b5eeeac9d3d21adadab8fb512033b10f6..a464f105d582415b93edaf0d7322dd77ac8f5005 100644 GIT binary patch delta 2354 zcmZ`*du)?c6hHU2YrirW8w1L=vX$=D4Jb%ZAknN22Mh-c#&`^(6#BUpyLPk#Hx=44 z#F$M3jE4_I0)|dQAZEb$LlFsRFg`*=kwjpcn23piU{r`P`a9p(!Uu_6&pqdN&+pvF zxwq%8Z_#1jwvt$oh>Gj|tD)!@h{FWDiO6gwn##V0_DCSq9A*D>^x;dzjSciDjBRYs zZmfL*`U~K}@xax=Fb{VA#PVG==R3Sdy1lPltN(u7z^9jvDMXf~_5+!=Aw&Y4DMT?s zCl#k;7&K2%2dRgErx7z!HgmI5eHLhzObCCZPK9+t!$fEG#RAzO%;m9JMnkGGavg2I zl^+ApK7!tMr)}1Pnksbds}R%z2}3qOHbS;Qx*Ik|;!oW52|81G zk8_)CeSSf;$R1B>hH!R}Z-_MDhk#86+z1+D3;4Y0r4Tdztf_eBXFPzd2Hb{t8_%B( zup)qSp2nPS&TksCf2aYopU=$b=krNp_768;j?Xq=_UG{a(*aBvVZclnZCEk;?FP*L zJOfVP7B~#}P56rp*p3~$40tm5TK@S43L1k}YCAG%DKrzGi9-7E3G%zaN6Pg{9pDs! z??RHDkREqAe9wt;Ot9PJ#j)&gd$F}W?p3gria0pa(ORgaVn6Igv=(|i24$uB6;6|d z1}dEI0xqTX3zR(;Et9o<(wnbogn{bc5)7MEVn_wKE{v%sDmxm|eZz1Gie zx6e7Xy5++qldrAo?Gf{wQDsK$l`BJ=dzvfRpd1lmsu55eCw0J1>dZE?fUV8-IMxFCZ`l<`b#pN5)*=I zxGnswrzX@K2&o=_Fo;tNo*LLgr*Y8={5voA(<*==DgH4ejBGuURd)x0G~ni5kM2=Z1 z@vStw3_p2~#Eq+xR6|u)IC%W=v*Rovr7Fyyv1%H3ABpf2) zz#x=RW#Z$ZaLyeYga3kvU$9sOC4|88sUEAbo5$L;>Ye4(RjH9V4 zu4A%&7)GPx;B=;qXq+Cey84GSS)0%SJCVMSzoGtnbh9fwpQ z6r~2^XIOg+h->mRfP-9#O%6ee^(P1~k%(`>sM@J) zlr)zpsOP$j${xP|9I7N%k7W)+iaDQm6XzzOEXOm!&lKVR8rlnSxfyZsH)<->vDR{a M_rcgK&)KHz~I8jz`z1x2bUCO=A{<{nG7B;WJx|MQ zTe`S>=9J4Xrli_QSY}%`EN4!hY{~jc;Y|V4xx=3}*!i9GdH+A|^IMU(1+v`|?_Q}I z_Z{88^oaImXEp^U#@x**9C3`B-*fUS2?_x1U}WQDWKd?};AUWCs+_E*Qy?bFxLk~J Wxh&&y3&!P6jLZEPm&Y+K&j$b@wN|JA diff --git a/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.AssemblyInfo.cs b/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.AssemblyInfo.cs index dac4f70..fa0086b 100644 --- a/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.AssemblyInfo.cs +++ b/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Sleopok.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7640df5cc809fe8cc6f1d9b9a6217212fefaed1f")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+fedfec2a4cc01029334d8899a839502b8990face")] [assembly: System.Reflection.AssemblyProductAttribute("Sleopok.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("Sleopok.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.AssemblyInfoInputs.cache b/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.AssemblyInfoInputs.cache index 6ac20a8..38586b3 100644 --- a/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.AssemblyInfoInputs.cache +++ b/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -d17f9dca864c4d8df026d969f5b6ea99b9c64210522de05cbf223c73c87241f4 +5ab19946e0862a233cc54d291fd7a3f27e64b66b5ba0deed43cb098d1e9e2950 diff --git a/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.assets.cache b/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.assets.cache index f9dda932cefe34351e2a7b0e5ac695f7fc355c18..82d3d508f4cfbb0c47794417c7d1eaacb376c828 100644 GIT binary patch delta 131 zcmeyu@{nnQhKdFw13@tHK+D8cJif+mRxvL5$)&lec_qa$?wKVXrAaYSsYUrpQJts!WYgeTf<>#c9rRKyK>zU{o=vl<%WG2PrrIwiK8N@^Z zC4E4WdMPVs;?r02vL$ zTtLhX#K?eWvL>TNCT~DuNrq=$Kw@%sVtT3s(8>A`C+ovq1adN`V{vh6Nl0ZuDtl3B sUP)$dDyMUPL8VWAa$*ikNl|I4kV|TDNoHPRNoIataA^|AR9+Ml0K;=r5dZ)H diff --git a/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.csproj.AssemblyReference.cache b/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.csproj.AssemblyReference.cache index 076ae1e6cbc7260aa45f6c82dde8073006fef3a6..39e5779a7c250f07a1c4cc1f6e21066f97f55456 100644 GIT binary patch literal 4217 zcmcInO>Z1E7+ym`r4`>_DxVQZ<&t_*C5I9zf@-r#S0o{1x21|ks%9r|w$^&=!Q)xF zJE|wTk%i(tbYT zEdB&$LpcGlA#wyWq@OZ3GvisNA)yDk&@2IR-gMSn#f;5+Gh@7)@4o-&&Vv_!y|7-q zC~kzjYVrD?(ymNW1)1U32=<5j;jK$+e|%GgedZ99+<_@@@+7`LXZrA}vOUdk{)Hus zGkwW2>q^cc*2pSrM5}JL7cJ%v6JL0O8M@@cbPbnrb!GMHhlE_Dd%a;-D!87eCHNzI zkq)`ORpSd2r?3pxSr3$5rTo8L`|C$5|Hnl6tn&L#`CB#0H$w&GcxP2!c2xxaaryE@ z+pE+Bp!KFr4l|#r9i}8c?7)83A}Dc7~WM79WgPc^CxfW4%p-d+Pmjc zq5n$0;~2v|O%Gt4^GLOc|ANDJ5%CU%Gmg>TK*kf${!zGOSsKi}D1igWB+rd&yy-ek z7to-;lxor!$5JJQDZSyH6IdSItr_$0|zi&b+7K6tl^qv5=W&aYhF^ ziYG%A#r{Rr^On33SV(_*8%cOj8#wi~4>9BpBZ z><|8m1;3qedfV07-jtuUsB^xJ;C}w<TJwODhW zlt@Sq)2F{u|Gk{qDsrgCGfSfw*Hzvw#+78$VzK15SbHj>eSxH9ipANKp-H^iyHxr) zj0!{F)Qn?NYJ^*-JeNw%(W_D}4QDCf3Qs}dG#U+37kZcM7WXfD$Wr6+M(}kVFAY~&s07=APt0stQ- BKD+<` diff --git a/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.csproj.CoreCompileInputs.cache b/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.csproj.CoreCompileInputs.cache index 873f4ca..b641b86 100644 --- a/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.csproj.CoreCompileInputs.cache +++ b/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -41452b14e8c8ea81ab536b55333608fe5ea90183b89453bd74806e2add53c90c +0a16ec38b6c4b5fcb1005d7c9ec70a307d026e3be3d426b201c8e1f37a231ec7 diff --git a/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.csproj.FileListAbsolute.txt b/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.csproj.FileListAbsolute.txt index 9788944..2c186f6 100644 --- a/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.csproj.FileListAbsolute.txt +++ b/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.csproj.FileListAbsolute.txt @@ -12,3 +12,9 @@ G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Tests\obj\Debug\net8.0\refint\Sl G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Tests\obj\Debug\net8.0\Sleopok.Tests.pdb G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Tests\obj\Debug\net8.0\Sleopok.Tests.genruntimeconfig.cache G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Tests\obj\Debug\net8.0\ref\Sleopok.Tests.dll +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Tests\bin\Debug\net8.0\ZeroLevel.dll +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Tests\bin\Debug\net8.0\Sleopok.Engine.dll +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Tests\bin\Debug\net8.0\Sleopok.Engine.pdb +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Tests\obj\Debug\net8.0\Sleopok.Tests.csproj.AssemblyReference.cache +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Tests\obj\Debug\net8.0\Sleopok..98C533F0.Up2Date +G:\Documents\GitHub\sleopok\src\Sleopok\Sleopok.Tests\bin\Debug\net8.0\ZeroLevel.pdb diff --git a/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.pdb b/src/Sleopok/Sleopok.Tests/obj/Debug/net8.0/Sleopok.Tests.pdb index c1b56d3b5eeeac9d3d21adadab8fb512033b10f6..a464f105d582415b93edaf0d7322dd77ac8f5005 100644 GIT binary patch delta 2354 zcmZ`*du)?c6hHU2YrirW8w1L=vX$=D4Jb%ZAknN22Mh-c#&`^(6#BUpyLPk#Hx=44 z#F$M3jE4_I0)|dQAZEb$LlFsRFg`*=kwjpcn23piU{r`P`a9p(!Uu_6&pqdN&+pvF zxwq%8Z_#1jwvt$oh>Gj|tD)!@h{FWDiO6gwn##V0_DCSq9A*D>^x;dzjSciDjBRYs zZmfL*`U~K}@xax=Fb{VA#PVG==R3Sdy1lPltN(u7z^9jvDMXf~_5+!=Aw&Y4DMT?s zCl#k;7&K2%2dRgErx7z!HgmI5eHLhzObCCZPK9+t!$fEG#RAzO%;m9JMnkGGavg2I zl^+ApK7!tMr)}1Pnksbds}R%z2}3qOHbS;Qx*Ik|;!oW52|81G zk8_)CeSSf;$R1B>hH!R}Z-_MDhk#86+z1+D3;4Y0r4Tdztf_eBXFPzd2Hb{t8_%B( zup)qSp2nPS&TksCf2aYopU=$b=krNp_768;j?Xq=_UG{a(*aBvVZclnZCEk;?FP*L zJOfVP7B~#}P56rp*p3~$40tm5TK@S43L1k}YCAG%DKrzGi9-7E3G%zaN6Pg{9pDs! z??RHDkREqAe9wt;Ot9PJ#j)&gd$F}W?p3gria0pa(ORgaVn6Igv=(|i24$uB6;6|d z1}dEI0xqTX3zR(;Et9o<(wnbogn{bc5)7MEVn_wKE{v%sDmxm|eZz1Gie zx6e7Xy5++qldrAo?Gf{wQDsK$l`BJ=dzvfRpd1lmsu55eCw0J1>dZE?fUV8-IMxFCZ`l<`b#pN5)*=I zxGnswrzX@K2&o=_Fo;tNo*LLgr*Y8={5voA(<*==DgH4ejBGuURd)x0G~ni5kM2=Z1 z@vStw3_p2~#Eq+xR6|u)IC%W=v*Rovr7Fyyv1%H3ABpf2) zz#x=RW#Z$ZaLyeYga3kvU$9sOC4|88sUEAbo5$L;>Ye4(RjH9V4 zu4A%&7)GPx;B=;qXq+Cey84GSS)0%SJCVMSzoGtnbh9fwpQ z6r~2^XIOg+h->mRfP-9#O%6ee^(P1~k%(`>sM@J) zlr)zpsOP$j${xP|9I7N%k7W)+iaDQm6XzzOEXOm!&lKVR8rlnSxfyZsH)<->vDR{a M_rcgK&)KHz~I8jz`z1x2bUCO=A{<{nG7B;WJx|MQ zTe`S>=9J4Xrli_QSY}%`EN4!hY{~jc;Y|V4xx=3}*!i9GdH+A|^IMU(1+v`|?_Q}I z_Z{88^oaImXEp^U#@x**9C3`B-*fUS2?_x1U}WQDWKd?};AUWCs+_E*Qy?bFxLk~J Wxh&&y3&!P6jLZEPm&Y+K&j$b@wN|JA diff --git a/src/Sleopok/Sleopok.Tests/obj/Sleopok.Tests.csproj.nuget.dgspec.json b/src/Sleopok/Sleopok.Tests/obj/Sleopok.Tests.csproj.nuget.dgspec.json index cc70e37..c008da6 100644 --- a/src/Sleopok/Sleopok.Tests/obj/Sleopok.Tests.csproj.nuget.dgspec.json +++ b/src/Sleopok/Sleopok.Tests/obj/Sleopok.Tests.csproj.nuget.dgspec.json @@ -4,6 +4,71 @@ "G:\\Documents\\GitHub\\sleopok\\src\\Sleopok\\Sleopok.Tests\\Sleopok.Tests.csproj": {} }, "projects": { + "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj": { + "version": "3.4.0.8", + "restore": { + "projectUniqueName": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj", + "projectName": "ZeroLevel", + "projectPath": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj", + "packagesPath": "C:\\Users\\Ogoun\\.nuget\\packages\\", + "outputPath": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Ogoun\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.200/PortableRuntimeIdentifierGraph.json" + } + } + }, "G:\\Documents\\GitHub\\sleopok\\src\\Sleopok\\Sleopok.Engine\\Sleopok.Engine.csproj": { "version": "1.0.0", "restore": { @@ -32,7 +97,11 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "projectReferences": {} + "projectReferences": { + "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj": { + "projectPath": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj" + } + } } }, "warningProperties": { @@ -49,12 +118,6 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "dependencies": { - "ZeroLevel": { - "target": "Package", - "version": "[3.4.0.8, )" - } - }, "imports": [ "net461", "net462", diff --git a/src/Sleopok/Sleopok.Tests/obj/project.assets.json b/src/Sleopok/Sleopok.Tests/obj/project.assets.json index 810aa94..cc05b8c 100644 --- a/src/Sleopok/Sleopok.Tests/obj/project.assets.json +++ b/src/Sleopok/Sleopok.Tests/obj/project.assets.json @@ -2,22 +2,6 @@ "version": 3, "targets": { "net8.0": { - "ZeroLevel/3.4.0.8": { - "type": "package", - "compile": { - "lib/net6.0/ZeroLevel.dll": {} - }, - "runtime": { - "lib/net6.0/ZeroLevel.dll": {} - }, - "contentFiles": { - "contentFiles/any/any/_._": { - "buildAction": "None", - "codeLanguage": "any", - "copyToOutput": false - } - } - }, "Sleopok.Engine/1.0.0": { "type": "project", "framework": ".NETCoreApp,Version=v8.0", @@ -30,29 +14,29 @@ "runtime": { "bin/placeholder/Sleopok.Engine.dll": {} } + }, + "ZeroLevel/3.4.0.8": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "compile": { + "bin/placeholder/ZeroLevel.dll": {} + }, + "runtime": { + "bin/placeholder/ZeroLevel.dll": {} + } } } }, "libraries": { - "ZeroLevel/3.4.0.8": { - "sha512": "zPyHKeeX9M96BPqXcS+MKnUbF1EWPUusz4i2Ij9UiF+HTU85MtCKW3MQZx2O6vVtRtRbD20OoKGwn7/vvXFTgw==", - "type": "package", - "path": "zerolevel/3.4.0.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "content/zero.ico", - "contentFiles/any/net6.0/zero.ico", - "lib/net6.0/ZeroLevel.dll", - "zero.png", - "zerolevel.3.4.0.8.nupkg.sha512", - "zerolevel.nuspec" - ] - }, "Sleopok.Engine/1.0.0": { "type": "project", "path": "../Sleopok.Engine/Sleopok.Engine.csproj", "msbuildProject": "../Sleopok.Engine/Sleopok.Engine.csproj" + }, + "ZeroLevel/3.4.0.8": { + "type": "project", + "path": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj", + "msbuildProject": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj" } }, "projectFileDependencyGroups": { diff --git a/src/Sleopok/Sleopok.Tests/obj/project.nuget.cache b/src/Sleopok/Sleopok.Tests/obj/project.nuget.cache index 50ac272..44ff015 100644 --- a/src/Sleopok/Sleopok.Tests/obj/project.nuget.cache +++ b/src/Sleopok/Sleopok.Tests/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "mNch86pkkquYXfThFypfi+NUSdjLFWRy/cWmm5ynS4AfjyGh5yLz4bEpOhkRNzjA0l4q7HWTuyu2fAYV2lockw==", + "dgSpecHash": "xyOpZV1ojrsCK1nD9z8X1xyWbibkrgwI9IZAL3gUsR1xRauOOe7HHLysWMriBW/Q+gHmI9fl0OhmzX2BHzEndg==", "success": true, "projectFilePath": "G:\\Documents\\GitHub\\sleopok\\src\\Sleopok\\Sleopok.Tests\\Sleopok.Tests.csproj", "expectedPackageFiles": [ diff --git a/src/Sleopok/Sleopok.sln b/src/Sleopok/Sleopok.sln index 39eae96..10d55dd 100644 --- a/src/Sleopok/Sleopok.sln +++ b/src/Sleopok/Sleopok.sln @@ -9,24 +9,66 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sleopok.Tests", "Sleopok.Te EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sleopok.App", "Sleopok.App\Sleopok.App.csproj", "{9E53D77C-D559-4B24-A8C6-37F80E3624BB}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZeroLevel", "F:\Documents\GitHub\Zero\ZeroLevel\ZeroLevel.csproj", "{592B7FC1-FD96-4881-8F35-DB2DA184CAF2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {D8D0C82C-147F-418A-8050-998368D07879}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D8D0C82C-147F-418A-8050-998368D07879}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D8D0C82C-147F-418A-8050-998368D07879}.Debug|x64.ActiveCfg = Debug|Any CPU + {D8D0C82C-147F-418A-8050-998368D07879}.Debug|x64.Build.0 = Debug|Any CPU + {D8D0C82C-147F-418A-8050-998368D07879}.Debug|x86.ActiveCfg = Debug|Any CPU + {D8D0C82C-147F-418A-8050-998368D07879}.Debug|x86.Build.0 = Debug|Any CPU {D8D0C82C-147F-418A-8050-998368D07879}.Release|Any CPU.ActiveCfg = Release|Any CPU {D8D0C82C-147F-418A-8050-998368D07879}.Release|Any CPU.Build.0 = Release|Any CPU + {D8D0C82C-147F-418A-8050-998368D07879}.Release|x64.ActiveCfg = Release|Any CPU + {D8D0C82C-147F-418A-8050-998368D07879}.Release|x64.Build.0 = Release|Any CPU + {D8D0C82C-147F-418A-8050-998368D07879}.Release|x86.ActiveCfg = Release|Any CPU + {D8D0C82C-147F-418A-8050-998368D07879}.Release|x86.Build.0 = Release|Any CPU {3CDCDABF-8B27-46DD-9F54-825F039B4511}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3CDCDABF-8B27-46DD-9F54-825F039B4511}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3CDCDABF-8B27-46DD-9F54-825F039B4511}.Debug|x64.ActiveCfg = Debug|Any CPU + {3CDCDABF-8B27-46DD-9F54-825F039B4511}.Debug|x64.Build.0 = Debug|Any CPU + {3CDCDABF-8B27-46DD-9F54-825F039B4511}.Debug|x86.ActiveCfg = Debug|Any CPU + {3CDCDABF-8B27-46DD-9F54-825F039B4511}.Debug|x86.Build.0 = Debug|Any CPU {3CDCDABF-8B27-46DD-9F54-825F039B4511}.Release|Any CPU.ActiveCfg = Release|Any CPU {3CDCDABF-8B27-46DD-9F54-825F039B4511}.Release|Any CPU.Build.0 = Release|Any CPU + {3CDCDABF-8B27-46DD-9F54-825F039B4511}.Release|x64.ActiveCfg = Release|Any CPU + {3CDCDABF-8B27-46DD-9F54-825F039B4511}.Release|x64.Build.0 = Release|Any CPU + {3CDCDABF-8B27-46DD-9F54-825F039B4511}.Release|x86.ActiveCfg = Release|Any CPU + {3CDCDABF-8B27-46DD-9F54-825F039B4511}.Release|x86.Build.0 = Release|Any CPU {9E53D77C-D559-4B24-A8C6-37F80E3624BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9E53D77C-D559-4B24-A8C6-37F80E3624BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9E53D77C-D559-4B24-A8C6-37F80E3624BB}.Debug|x64.ActiveCfg = Debug|Any CPU + {9E53D77C-D559-4B24-A8C6-37F80E3624BB}.Debug|x64.Build.0 = Debug|Any CPU + {9E53D77C-D559-4B24-A8C6-37F80E3624BB}.Debug|x86.ActiveCfg = Debug|Any CPU + {9E53D77C-D559-4B24-A8C6-37F80E3624BB}.Debug|x86.Build.0 = Debug|Any CPU {9E53D77C-D559-4B24-A8C6-37F80E3624BB}.Release|Any CPU.ActiveCfg = Release|Any CPU {9E53D77C-D559-4B24-A8C6-37F80E3624BB}.Release|Any CPU.Build.0 = Release|Any CPU + {9E53D77C-D559-4B24-A8C6-37F80E3624BB}.Release|x64.ActiveCfg = Release|Any CPU + {9E53D77C-D559-4B24-A8C6-37F80E3624BB}.Release|x64.Build.0 = Release|Any CPU + {9E53D77C-D559-4B24-A8C6-37F80E3624BB}.Release|x86.ActiveCfg = Release|Any CPU + {9E53D77C-D559-4B24-A8C6-37F80E3624BB}.Release|x86.Build.0 = Release|Any CPU + {592B7FC1-FD96-4881-8F35-DB2DA184CAF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {592B7FC1-FD96-4881-8F35-DB2DA184CAF2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {592B7FC1-FD96-4881-8F35-DB2DA184CAF2}.Debug|x64.ActiveCfg = Debug|x64 + {592B7FC1-FD96-4881-8F35-DB2DA184CAF2}.Debug|x64.Build.0 = Debug|x64 + {592B7FC1-FD96-4881-8F35-DB2DA184CAF2}.Debug|x86.ActiveCfg = Debug|x86 + {592B7FC1-FD96-4881-8F35-DB2DA184CAF2}.Debug|x86.Build.0 = Debug|x86 + {592B7FC1-FD96-4881-8F35-DB2DA184CAF2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {592B7FC1-FD96-4881-8F35-DB2DA184CAF2}.Release|Any CPU.Build.0 = Release|Any CPU + {592B7FC1-FD96-4881-8F35-DB2DA184CAF2}.Release|x64.ActiveCfg = Release|x64 + {592B7FC1-FD96-4881-8F35-DB2DA184CAF2}.Release|x64.Build.0 = Release|x64 + {592B7FC1-FD96-4881-8F35-DB2DA184CAF2}.Release|x86.ActiveCfg = Release|x86 + {592B7FC1-FD96-4881-8F35-DB2DA184CAF2}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE