Prechádzať zdrojové kódy

:art: Improve reindexing

Daniel 1 rok pred
rodič
commit
ff6c154bfa
2 zmenil súbory, kde vykonal 9 pridanie a 3 odobranie
  1. 1 0
      kernel/model/box.go
  2. 8 3
      kernel/model/index.go

+ 1 - 0
kernel/model/box.go

@@ -502,6 +502,7 @@ func genTreeID(tree *parse.Tree) {
 func FullReindex() {
 	task.AppendTask(task.DatabaseIndexFull, fullReindex)
 	task.AppendTask(task.DatabaseIndexRef, IndexRefs)
+	task.AppendTaskWithTimeout(task.DatabaseIndexEmbedBlock, 30*time.Second, autoIndexEmbedBlock)
 	task.AppendTask(task.ReloadUI, util.ReloadUI)
 }
 

+ 8 - 3
kernel/model/index.go

@@ -282,13 +282,18 @@ func IndexRefs() {
 	ResetVirtualBlockRefCache()
 }
 
+var indexEmbedBlockLock = sync.Mutex{}
+
 // IndexEmbedBlockJob 嵌入块支持搜索 https://github.com/siyuan-note/siyuan/issues/7112
 func IndexEmbedBlockJob() {
-	embedBlocks := sql.QueryEmptyContentEmbedBlocks()
-	task.AppendTaskWithTimeout(task.DatabaseIndexEmbedBlock, 30*time.Second, autoIndexEmbedBlock, embedBlocks)
+	task.AppendTaskWithTimeout(task.DatabaseIndexEmbedBlock, 30*time.Second, autoIndexEmbedBlock)
 }
 
-func autoIndexEmbedBlock(embedBlocks []*sql.Block) {
+func autoIndexEmbedBlock() {
+	indexEmbedBlockLock.Lock()
+	defer indexEmbedBlockLock.Unlock()
+
+	embedBlocks := sql.QueryEmptyContentEmbedBlocks()
 	for i, embedBlock := range embedBlocks {
 		markdown := strings.TrimSpace(embedBlock.Markdown)
 		markdown = strings.TrimPrefix(markdown, "{{")