You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Data.Doublets的doublets实现类trie-tree的数据结构

关于Data.Doublets引擎实现类前缀树结构的问题

请问有没有人使用过LinksPlatform的Data.Doublets引擎:https://github.com/linksplatform/Data.Doublets
我在尝试存储数据时遇到了问题,现有代码如下:

// 声明links实例
.....
var root = links.Create();
links.Update(root, root, root);
// 结构为 (root : root->root)


var h_node = links.CreatePoint();
var s_node = links.CreatePoint();

// 我想要实现两个关联:
// (root->h)
// (root->s)
root = links.Update(root, root, h_node);
root = links.Update(root, root, s_node);
    .....

我目前可以创建(root : root->h)形式的单条链接,但不知道怎么实现一个root节点同时关联多个子节点的结构,我发现单个doublet似乎只能指向一个目标,我需要的是root可以链接到集合(root : root->(h, s))。
目前我想到的反向关联方案不符合需求:

(root : root->root)
(h : h->root)
(s : s->root)
......

我期望的结构如下:

(root : root->root
    root->h
    root->s
)

可供测试的在线运行地址:https://dotnetfiddle.net/GgYPKU
请问如何调整逻辑才能实现我想要的类trie-tree结构?


解决方法

你对Update方法的用法有误:Update的作用是修改已存在的单个链接的源和目标属性,不是为同一个节点新增关联。你反复修改root对应链接的目标,自然只会保留最后一次设置的s_node关联。

Data.Doublets本身完全支持单个源节点指向多个目标,你不需要改动root本身的自引用结构,只要单独创建多个以root为源的独立链接即可:

// 初始化root节点,保留自引用结构
var root = links.Create();
links.Update(root, root, root);

// 创建子节点
var h_node = links.CreatePoint();
var s_node = links.CreatePoint();

// 单独创建多条root的出边链接,不要修改root本身的结构
var rootToH = links.Create(root, h_node);
var rootToS = links.Create(root, s_node);

执行后会生成3个有效链接:

  1. root自引用:(root: root -> root)
  2. root到h节点的关联:(rootToH的ID: root -> h_node)
  3. root到s节点的关联:(rootToS的ID: root -> s_node)

如果需要查询root关联的所有子节点,只要过滤所有Source等于root ID的链接,取对应的Target就能得到你要的(h,s)集合,完全匹配预期结构。
如果要实现多层级的前缀树结构,重复这个逻辑即可:比如要给h节点加子节点,再创建多个以h_node为源的链接就行。


内容的提问来源于stack exchange,提问作者uselessgoddess

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:27:05