Ai
12 Star 98 Fork 25

RACHEL/fastsearch

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
initialize.go 2.72 KB
一键复制 编辑 原始数据 按行查看 历史
内容可能含有违规信息 提交于 2024-09-06 08:39 +08:00 . leveldb
package core
import (
"context"
"fmt"
"log"
"net/http"
"gitee.com/rachel_os/fastsearch/global"
mqtt_server "gitee.com/rachel_os/fastsearch/mqtt/server"
"gitee.com/rachel_os/fastsearch/negative"
"gitee.com/rachel_os/fastsearch/searcher"
"gitee.com/rachel_os/fastsearch/searcher/model"
"gitee.com/rachel_os/fastsearch/searcher/words"
"gitee.com/rachel_os/fastsearch/utils"
"gitee.com/rachel_os/fastsearch/web/controller"
"gitee.com/rachel_os/fastsearch/web/router"
//_ "net/http/pprof"
"os"
"os/signal"
//"runtime"
"syscall"
"time"
)
// NewContainer 创建一个容器
func NewContainer(tokenizer *words.Tokenizer, neg *negative.Engine) *searcher.Container {
container := &searcher.Container{
Dir: global.CONFIG.Data,
Debug: global.CONFIG.Debug,
AllowDrop: global.CONFIG.AllowDrop,
Neg: neg,
Tokenizer: tokenizer,
Shard: global.CONFIG.Shard,
Timeout: global.CONFIG.Timeout,
BufferNum: global.CONFIG.BufferNum,
}
if err := container.Init(); err != nil {
panic(err)
}
return container
}
func NewTokenizer(dictionaryPath string) *words.Tokenizer {
return words.NewTokenizer(dictionaryPath)
}
// Initialize 初始化
func Initialize() {
//runtime.SetMutexProfileFraction(1) // 开启对锁调用的跟踪
//runtime.SetBlockProfileRate(1) // 开启对阻塞操作的跟踪
//go func() { http.ListenAndServe("0.0.0.0:6060", nil) }()
global.CONFIG = Parser()
if !global.CONFIG.Debug {
log.SetOutput(os.Stdout) //将记录器的输出设置为os.Stdout
}
defer func() {
if r := recover(); r != nil {
fmt.Printf("panic: %s\n", r)
}
}()
//初始化分词器
tokenizer := NewTokenizer(global.CONFIG.Dictionary)
neg := negative.NewNegative(global.CONFIG.Negative_data, tokenizer)
neg.AllKeys(&model.NegSearch{})
global.Container = NewContainer(tokenizer, neg)
// 初始化业务逻辑
controller.NewServices()
// 初始化mqtt
if global.CONFIG.MQTT.Enable {
go func() {
mq := mqtt_server.NewMQTTServer(global.CONFIG.MQTT.Path)
mq.Run()
mq.InitRouter("fastsearch")
}()
}
// 注册路由
r := router.SetupRouter()
// 启动服务
srv := &http.Server{
Addr: global.CONFIG.Addr,
Handler: r,
}
utils.DEBUG = global.CONFIG.INFO
go func() {
// 开启一个goroutine启动服务
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Println("listen:", err)
os.Exit(0)
}
}()
// 优雅关机
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
log.Println("Shutdown Server ...")
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := srv.Shutdown(ctx); err != nil {
log.Println("Server Shutdown:", err)
}
log.Println("Server exiting")
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/rachel_os/fastsearch.git
git@gitee.com:rachel_os/fastsearch.git
rachel_os
fastsearch
fastsearch
98a29f8d6bf9

搜索帮助