| | |
| | | "github.com/blevesearch/bleve/v2" |
| | | "github.com/blevesearch/bleve/v2/mapping" |
| | | "sync" |
| | | "time" |
| | | ) |
| | | |
| | | // InitAnalyzer 加载自定义分词器(sego) |
| | |
| | | } |
| | | 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 |
| | | } |