milvus/internal/util/reduce/reduce_info.go
Chun Han df7ae08851
fix: iterator cursor progress too fast(#36179) (#36180)
related: #36179

Signed-off-by: MrPresent-Han <chun.han@gmail.com>
Co-authored-by: MrPresent-Han <chun.han@gmail.com>
2024-09-24 11:45:13 +08:00

120 lines
2.2 KiB
Go

package reduce
import (
"github.com/milvus-io/milvus-proto/go-api/v2/schemapb"
)
type ResultInfo struct {
nq int64
topK int64
metricType string
pkType schemapb.DataType
offset int64
groupByFieldId int64
groupSize int64
isAdvance bool
}
func NewReduceSearchResultInfo(
nq int64,
topK int64,
) *ResultInfo {
return &ResultInfo{
nq: nq,
topK: topK,
}
}
func (r *ResultInfo) WithMetricType(metricType string) *ResultInfo {
r.metricType = metricType
return r
}
func (r *ResultInfo) WithPkType(pkType schemapb.DataType) *ResultInfo {
r.pkType = pkType
return r
}
func (r *ResultInfo) WithOffset(offset int64) *ResultInfo {
r.offset = offset
return r
}
func (r *ResultInfo) WithGroupByField(groupByField int64) *ResultInfo {
r.groupByFieldId = groupByField
return r
}
func (r *ResultInfo) WithGroupSize(groupSize int64) *ResultInfo {
r.groupSize = groupSize
return r
}
func (r *ResultInfo) WithAdvance(advance bool) *ResultInfo {
r.isAdvance = advance
return r
}
func (r *ResultInfo) GetNq() int64 {
return r.nq
}
func (r *ResultInfo) GetTopK() int64 {
return r.topK
}
func (r *ResultInfo) GetMetricType() string {
return r.metricType
}
func (r *ResultInfo) GetPkType() schemapb.DataType {
return r.pkType
}
func (r *ResultInfo) GetOffset() int64 {
return r.offset
}
func (r *ResultInfo) GetGroupByFieldId() int64 {
return r.groupByFieldId
}
func (r *ResultInfo) GetGroupSize() int64 {
return r.groupSize
}
func (r *ResultInfo) GetIsAdvance() bool {
return r.isAdvance
}
func (r *ResultInfo) SetMetricType(metricType string) {
r.metricType = metricType
}
type IReduceType int32
const (
IReduceNoOrder IReduceType = iota
IReduceInOrder
IReduceInOrderForBest
)
func ShouldStopWhenDrained(reduceType IReduceType) bool {
return reduceType == IReduceInOrder || reduceType == IReduceInOrderForBest
}
func ToReduceType(val int32) IReduceType {
switch val {
case 1:
return IReduceInOrder
case 2:
return IReduceInOrderForBest
default:
return IReduceNoOrder
}
}
func ShouldUseInputLimit(reduceType IReduceType) bool {
return reduceType == IReduceNoOrder || reduceType == IReduceInOrder
}