ai_xiaopei
2026-08-21 efd6a8d9902e79df852012bf4a3fa94e1f8889cb
internal/graph/builder.go
@@ -15,13 +15,19 @@
   labelToID := make(map[string]int64)
   nextVirtualID := int64(1000000) // 虚拟节点从 1000000 开始
   getOrCreateVirtualNode := func(label string) int64 {
   getOrCreateVirtualNode := func(label, nodeType string) int64 {
      if id, ok := labelToID[label]; ok {
         return id
      }
      id := nextVirtualID
      nextVirtualID++
      labelToID[label] = id
      g.Nodes = append(g.Nodes, &Node{
         ID:       id,
         Path:     label, // label 已含 "tag:"/"entity:" 前缀
         Title:    strings.TrimPrefix(strings.TrimPrefix(label, "tag:"), "entity:"),
         NodeType: nodeType,
      })
      return id
   }
@@ -31,6 +37,7 @@
         Path:      f.Path,
         Title:     f.Title,
         Section:   f.Section,
         NodeType:  "file",
         Tags:      f.Tags,
         Entities:  f.Entities,
         Wikilinks: f.Wikilinks,
@@ -40,7 +47,7 @@
      // 创建 tag 边
      for _, tag := range f.Tags {
         virtualID := getOrCreateVirtualNode("tag:" + tag)
         virtualID := getOrCreateVirtualNode("tag:"+tag, "tag")
         g.Edges = append(g.Edges, &Edge{
            FromNode: node.ID,
            ToNode:   virtualID,
@@ -51,7 +58,7 @@
      // 创建 entity 边
      for _, entity := range f.Entities {
         virtualID := getOrCreateVirtualNode("entity:" + entity)
         virtualID := getOrCreateVirtualNode("entity:"+entity, "entity")
         g.Edges = append(g.Edges, &Edge{
            FromNode: node.ID,
            ToNode:   virtualID,