master
この中二病に爆焔を! 3 years ago
parent d80190d422
commit c2ef2ea581

@ -0,0 +1,10 @@
Imports Microsoft.VisualBasic.Data.IO
''' <summary>
''' A descriptor of the specific resource file
''' </summary>
Public Class NodeMap
Public Property resources As List(Of String)
End Class

@ -243,6 +243,8 @@
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="NodeMap.vb" />
<Compile Include="Resource.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
@ -287,6 +289,10 @@
<Project>{c1413834-6eba-4668-b3e4-9dfa1edb9a5d}</Project>
<Name>HDSPack</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\sciBASIC#\Data_science\Graph\graph-netcore5.vbproj">
<Project>{ae10f033-1ee2-44ef-af06-f1c81411d069}</Project>
<Name>graph-netcore5</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\sciBASIC#\Microsoft.VisualBasic.Core\src\Core.vbproj">
<Project>{ef075a21-793b-45ed-9c38-ad5d04744aec}</Project>
<Name>Core</Name>

@ -0,0 +1,88 @@
Imports System.IO
Imports Microsoft.VisualBasic.ComponentModel.Ranges
Imports Microsoft.VisualBasic.Data.GraphTheory
Imports Microsoft.VisualBasic.DataStorage.HDSPack.FileSystem
''' <summary>
''' Resource query language
''' </summary>
Public Class Resource : Implements IDisposable
ReadOnly buf As StreamPack
ReadOnly index As Trie(Of NodeMap)
Private disposedValue As Boolean
Sub New(res As StreamPack)
buf = res
End Sub
Public Function Add(key As String, data As Byte()) As Boolean
Dim tokens As String() = Strings.LCase(key).Split
Dim map As String = key.MD5
Dim path As String = $"/pool/{map.Substring(4, 2)}/{map.Substring(16, 6)}/{map}"
For Each si As String In tokens
Dim v = index.Add(key)
Dim page As NodeMap = v.data
Call page.resources.Add(map)
Next
Dim file As Stream = buf.OpenFile(path, FileMode.OpenOrCreate, FileAccess.Write)
Call file.Write(data, Scan0, data.Length)
Call file.Flush()
Call file.Dispose()
Return True
End Function
Public Function [Get](query As String) As IEnumerable(Of NumericTagged(Of String))
Dim tokens As String() = Strings.LCase(query).Split
Dim maps As New Dictionary(Of String, Double)
For Each si As String In tokens
Dim v = index.Find(si)
Dim f As Double = 0.5
If v.success Then
f = 1
End If
For Each map As String In v.child.data.resources
maps(map) += f
Next
Next
Return From a
In maps
Select o = New NumericTagged(Of String)(a.Value, a.Key)
Order By o.tag Descending
End Function
Protected Overridable Sub Dispose(disposing As Boolean)
If Not disposedValue Then
If disposing Then
' TODO: ()
Call buf.Dispose()
End If
' TODO: ()
' TODO: null
disposedValue = True
End If
End Sub
' ' TODO: Dispose(disposing As Boolean)
' Protected Overrides Sub Finalize()
' ' Dispose(disposing As Boolean)
' Dispose(disposing:=False)
' MyBase.Finalize()
' End Sub
Public Sub Dispose() Implements IDisposable.Dispose
' Dispose(disposing As Boolean)
Dispose(disposing:=True)
GC.SuppressFinalize(Me)
End Sub
End Class
Loading…
Cancel
Save