func (fb *NumericFacetBuilder) Update(ft index.FieldTerms) { terms, ok := ft[fb.field] if ok { for _, term := range terms { // only consider the values which are shifted 0 prefixCoded := numeric_util.PrefixCoded(term) shift, err := prefixCoded.Shift() if err == nil && shift == 0 { i64, err := prefixCoded.Int64() if err == nil { f64 := numeric_util.Int64ToFloat64(i64) // look at each of the ranges for a match for rangeName, r := range fb.ranges { if (r.min == nil || f64 >= *r.min) && (r.max == nil || f64 < *r.max) { existingCount, existed := fb.termsCount[rangeName] if existed { fb.termsCount[rangeName] = existingCount + 1 } else { fb.termsCount[rangeName] = 1 } fb.total++ } } } } } } else { fb.missing++ } }
func (fb *DateTimeFacetBuilder) Update(ft index.FieldTerms) { terms, ok := ft[fb.field] if ok { for _, term := range terms { // only consider the values which are shifted 0 prefixCoded := numeric_util.PrefixCoded(term) shift, err := prefixCoded.Shift() if err == nil && shift == 0 { i64, err := prefixCoded.Int64() if err == nil { t := time.Unix(0, i64) // look at each of the ranges for a match for rangeName, r := range fb.ranges { if (r.start.IsZero() || t.After(r.start) || t.Equal(r.start)) && (r.end.IsZero() || t.Before(r.end)) { existingCount, existed := fb.termsCount[rangeName] if existed { fb.termsCount[rangeName] = existingCount + 1 } else { fb.termsCount[rangeName] = 1 } fb.total++ } } } } } } else { fb.missing++ } }