From ba366627594a176074ec1bd55d9cb1664067787c Mon Sep 17 00:00:00 2001 From: lzh <1625167628@qq.com> Date: Wed, 9 Jul 2025 11:41:15 +0800 Subject: [PATCH] support bleve highlight --- internal/app/logic/bleve.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/app/logic/bleve.go b/internal/app/logic/bleve.go index 3dd5d5d..9c390da 100644 --- a/internal/app/logic/bleve.go +++ b/internal/app/logic/bleve.go @@ -5,6 +5,7 @@ import ( "github.com/blevesearch/bleve/v2" "github.com/blevesearch/bleve/v2/search" + _ "github.com/blevesearch/bleve/v2/search/highlight/highlighter/ansi" "github.com/google/uuid" "github.com/lzh-1625/go_process_manager/internal/app/model" @@ -108,12 +109,19 @@ func (b *bleveLogic) Search(req model.GetLogReq, filterProcessName ...string) (r if req.Sort == "asc" { sortArgs = append(sortArgs, "time") } + hl := bleve.HighlightRequest{} + hl.AddField("log") + style := "ansi" res, err := b.index.Search(&bleve.SearchRequest{ Query: buildQuery, Fields: []string{"log", "name", "using", "time"}, From: req.Page.From, Size: req.Page.Size, Sort: search.ParseSortOrderStrings(sortArgs), + Highlight: &bleve.HighlightRequest{ + Style: &style, + Fields: []string{"log"}, + }, }) if err != nil { logger.Logger.Warnw("bleve search failed", "err", err) @@ -122,7 +130,7 @@ func (b *bleveLogic) Search(req model.GetLogReq, filterProcessName ...string) (r data := []*model.ProcessLog{} for _, v := range res.Hits { data = append(data, &model.ProcessLog{ - Log: v.Fields["log"].(string), + Log: v.Fragments["log"][0], Time: int64(v.Fields["time"].(float64)), Using: v.Fields["using"].(string), Name: v.Fields["name"].(string),