40 lines
910 B
Go
40 lines
910 B
Go
package search
|
||
|
||
import (
|
||
"fmt"
|
||
"github.com/blevesearch/bleve/v2"
|
||
"log"
|
||
"os"
|
||
)
|
||
|
||
// 初始化索引(程序启动时调用一次)
|
||
func InitIndex() error {
|
||
// 检查索引目录是否存在(Bleve v2 方式)
|
||
_, err := os.Stat("data")
|
||
exists := !os.IsNotExist(err)
|
||
if err != nil && !os.IsNotExist(err) {
|
||
// 除了"不存在"之外的其他错误(如权限问题)
|
||
return fmt.Errorf("检查索引目录失败: %v", err)
|
||
}
|
||
|
||
if exists {
|
||
// 打开已有索引
|
||
globalIndex, err = bleve.Open("data")
|
||
if err != nil {
|
||
return fmt.Errorf("打开索引失败: %v", err)
|
||
}
|
||
log.Println("成功打开已有索引")
|
||
} else {
|
||
// 创建新索引
|
||
mapping := bleve.NewIndexMapping()
|
||
globalIndex, err = bleve.New("data", mapping)
|
||
if err != nil {
|
||
return fmt.Errorf("创建索引失败: %v", err)
|
||
}
|
||
log.Println("成功创建新索引")
|
||
|
||
// 初始化文档(略)
|
||
}
|
||
return nil
|
||
}
|