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