소스 검색

:zap: 改进重建索引 https://github.com/siyuan-note/siyuan/issues/7018

Liang Ding 2 년 전
부모
커밋
07a5e7501a
2개의 변경된 파일14개의 추가작업 그리고 14개의 파일을 삭제
  1. 13 6
      kernel/filesys/tree.go
  2. 1 8
      kernel/model/file.go

+ 13 - 6
kernel/filesys/tree.go

@@ -29,6 +29,7 @@ import (
 	"github.com/88250/lute"
 	"github.com/88250/lute/parse"
 	"github.com/88250/lute/render"
+	jsoniter "github.com/json-iterator/go"
 	"github.com/siyuan-note/filelock"
 	"github.com/siyuan-note/logging"
 	"github.com/siyuan-note/siyuan/kernel/cache"
@@ -88,13 +89,13 @@ func LoadTree(boxID, p string, luteEngine *lute.Lute) (ret *parse.Tree, err erro
 			hPathBuilder.WriteString("Untitled/")
 			continue
 		}
-		parentTree, parseErr := parse.ParseJSONWithoutFix(parentData, luteEngine.ParseOptions)
-		if nil != parseErr {
-			logging.LogWarnf("parse parent tree [%s] failed: %s", parentAbsPath, parseErr)
-			hPathBuilder.WriteString("Untitled/")
-			continue
+
+		ial := ReadDocIAL(parentData)
+		title := ial["title"]
+		if "" == title {
+			title = "Untitled"
 		}
-		hPathBuilder.WriteString(parentTree.Root.IALAttr("title"))
+		hPathBuilder.WriteString(title)
 		hPathBuilder.WriteString("/")
 	}
 	hPathBuilder.WriteString(ret.Root.IALAttr("title"))
@@ -262,3 +263,9 @@ func parseJSON2Tree(boxID, p string, jsonData []byte, luteEngine *lute.Lute) (re
 	}
 	return
 }
+
+func ReadDocIAL(data []byte) (ret map[string]string) {
+	ret = map[string]string{}
+	jsoniter.Get(data, "Properties").ToVal(&ret)
+	return
+}

+ 1 - 8
kernel/model/file.go

@@ -37,7 +37,6 @@ import (
 	"github.com/dustin/go-humanize"
 	"github.com/facette/natsort"
 	"github.com/gin-gonic/gin"
-	jsoniter "github.com/json-iterator/go"
 	"github.com/siyuan-note/filelock"
 	"github.com/siyuan-note/logging"
 	"github.com/siyuan-note/siyuan/kernel/cache"
@@ -143,7 +142,7 @@ func (box *Box) docIAL(p string) (ret map[string]string) {
 		logging.LogErrorf("read file [%s] failed: %s", p, err)
 		return nil
 	}
-	ret = readDocIAL(data)
+	ret = filesys.ReadDocIAL(data)
 	if 1 > len(ret) {
 		logging.LogWarnf("tree [%s] is corrupted", filePath)
 		box.moveCorruptedData(filePath)
@@ -167,12 +166,6 @@ func (box *Box) moveCorruptedData(filePath string) {
 	logging.LogWarnf("moved corrupted data file [%s] to [%s]", filePath, to)
 }
 
-func readDocIAL(data []byte) (ret map[string]string) {
-	ret = map[string]string{}
-	jsoniter.Get(data, "Properties").ToVal(&ret)
-	return
-}
-
 func SearchDocsByKeyword(keyword string) (ret []map[string]string) {
 	ret = []map[string]string{}