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 | 68 ++++++++++++++++++++++------------ 1 files changed, 44 insertions(+), 24 deletions(-) diff --git a/pkg/blevex/bleve.go b/pkg/blevex/bleve.go index 3afe948..9b3e612 100644 --- a/pkg/blevex/bleve.go +++ b/pkg/blevex/bleve.go @@ -4,43 +4,35 @@ "fmt" "github.com/blevesearch/bleve/v2" "github.com/blevesearch/bleve/v2/mapping" - "github.com/yanyiwu/gojieba" "sync" + "time" ) -// InitAnalyzer 鍔犺浇鑷畾涔夊垎璇嶅櫒锛堢粨宸村垎璇嶏級 +// InitAnalyzer 鍔犺浇鑷畾涔夊垎璇嶅櫒锛坰ego锛� var defaultAnalyzer *mapping.IndexMappingImpl func InitAnalyzer() { indexMapping := bleve.NewIndexMapping() - //os.RemoveAll(IndexDir) - //// clean index when example finished - //defer os.RemoveAll(IndexDir) - - err := indexMapping.AddCustomTokenizer("gojieba", + err := indexMapping.AddCustomTokenizer("sego", map[string]interface{}{ - "dictpath": gojieba.DICT_PATH, - "hmmpath": gojieba.HMM_PATH, - "userdictpath": gojieba.USER_DICT_PATH, - "idf": gojieba.IDF_PATH, - "stop_words": gojieba.STOP_WORDS_PATH, - "type": "gojieba", + "dictpath": "conf/dictionary.txt", // 鏇挎崲涓哄疄闄呯殑瀛楀吀璺緞 + "type": "sego", }, ) if err != nil { panic(err) } - err = indexMapping.AddCustomAnalyzer("gojieba", + err = indexMapping.AddCustomAnalyzer("sego", map[string]interface{}{ - "type": "gojieba", - "tokenizer": "gojieba", + "type": "sego", + "tokenizer": "sego", }, ) if err != nil { panic(err) } - indexMapping.DefaultAnalyzer = "gojieba" + indexMapping.DefaultAnalyzer = "sego" defaultAnalyzer = indexMapping } @@ -78,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) @@ -102,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) @@ -141,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