From 3e129de1b9ea21cdb7dfff232c3dd32979729b68 Mon Sep 17 00:00:00 2001
From: ai_xiaopei <xiaopei@aisim.cn>
Date: Fri, 21 Aug 2026 19:26:16 +0800
Subject: [PATCH] feat(fts): FTS 表仅收录 file 节点

---
 internal/graph/builder.go |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/internal/graph/builder.go b/internal/graph/builder.go
index 428535b..ce5f0ea 100644
--- a/internal/graph/builder.go
+++ b/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,

--
Gitblit v1.10.0