From 73b6baf6af3d88cdcb0e2df7932a9bd96b0b85c5 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期一, 01 七月 2024 22:32:34 +0800 Subject: [PATCH] 月度统计出入库按类型汇总报表定时任务和手动跑任务接口 --- pkg/blevex/bleve.go | 43 ++++++++++++++++++++++++++++++++++++------- 1 files changed, 36 insertions(+), 7 deletions(-) diff --git a/pkg/blevex/bleve.go b/pkg/blevex/bleve.go index 40b334e..9b3e612 100644 --- a/pkg/blevex/bleve.go +++ b/pkg/blevex/bleve.go @@ -5,6 +5,7 @@ "github.com/blevesearch/bleve/v2" "github.com/blevesearch/bleve/v2/mapping" "sync" + "time" ) // InitAnalyzer 鍔犺浇鑷畾涔夊垎璇嶅櫒锛坰ego锛� @@ -69,7 +70,7 @@ if err != nil { return } - req := bleve.NewSearchRequest(bleve.NewQueryStringQuery(keyword)) + req := bleve.NewSearchRequest(bleve.NewMatchQuery(keyword)) req.From = from req.Size = size res, err := index.Search(req) @@ -93,15 +94,12 @@ // Create a boolean query with a should clause for fuzzy search boolQuery := bleve.NewBooleanQuery() - - fuzzyQuery := bleve.NewFuzzyQuery(keyword) - fuzzyQuery.SetFuzziness(2) // Set the fuzziness level as needed - - boolQuery.AddShould(fuzzyQuery) + fuzzyQuery := bleve.NewMatchQuery(keyword) + boolQuery.AddMust(fuzzyQuery) // Add a must clause for category filtering for key, val := range conditions { - query := bleve.NewQueryStringQuery(fmt.Sprintf("%s:%s", key, val)) + query := bleve.NewQueryStringQuery(fmt.Sprintf("%v:%v", key, val)) boolQuery.AddMust(query) } req := bleve.NewSearchRequest(boolQuery) @@ -132,3 +130,34 @@ } return results } + +func TimeSearch(indexName string, t time.Time, conditions map[string]interface{}, from, size int) (ids []string, total uint64, err error) { + index, err := LoadIndex(indexName) + if err != nil { + return nil, 0, err + } + startDate := t + endDate := t.Add(time.Hour * 24).Add(-time.Second * 1) + timeRangeQuery := bleve.NewDateRangeQuery(startDate, endDate) + boolQuery := bleve.NewBooleanQuery() + boolQuery.AddMust(timeRangeQuery) + for key, val := range conditions { + query := bleve.NewQueryStringQuery(fmt.Sprintf("%v:%v", key, val)) + boolQuery.AddMust(query) + } + + req := bleve.NewSearchRequest(boolQuery) + req.From = from + req.Size = size + res, err := index.Search(req) + if err != nil { + return nil, 0, err + } + if res == nil { + return + } + for _, ret := range dealResult(res) { + ids = append(ids, ret.Id) + } + return ids, res.Total, nil +} -- Gitblit v1.8.0