From 16e06252079d36be7686a3d006c8b73565973c68 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期一, 18 十二月 2023 21:04:08 +0800 Subject: [PATCH] 全文搜索支持时间查询 --- pkg/blevex/bleve.go | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) diff --git a/pkg/blevex/bleve.go b/pkg/blevex/bleve.go index 08fe999..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锛� @@ -129,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