github.com/weaviate/weaviate@v1.24.6/adapters/repos/db/vector/common/search_by_dist_params.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package common 13 14 const ( 15 // DefaultSearchByDistInitialLimit : 16 // the initial limit of 100 here is an 17 // arbitrary decision, and can be tuned 18 // as needed 19 DefaultSearchByDistInitialLimit = 100 20 21 // DefaultSearchByDistLimitMultiplier : 22 // the decision to increase the limit in 23 // multiples of 10 here is an arbitrary 24 // decision, and can be tuned as needed 25 DefaultSearchByDistLimitMultiplier = 10 26 ) 27 28 type SearchByDistParams struct { 29 offset int 30 limit int 31 totalLimit int 32 maximumSearchLimit int64 33 } 34 35 func NewSearchByDistParams( 36 offset int, 37 limit int, 38 totalLimit int, 39 maximumSearchLimit int64, 40 ) *SearchByDistParams { 41 return &SearchByDistParams{ 42 offset: offset, 43 limit: limit, 44 totalLimit: totalLimit, 45 maximumSearchLimit: maximumSearchLimit, 46 } 47 } 48 49 func (params *SearchByDistParams) TotalLimit() int { 50 return params.totalLimit 51 } 52 53 func (params *SearchByDistParams) MaximumSearchLimit() int64 { 54 return params.maximumSearchLimit 55 } 56 57 func (params *SearchByDistParams) OffsetCapacity(ids []uint64) int { 58 if l := len(ids); l < params.offset { 59 return l 60 } 61 return params.offset 62 } 63 64 func (params *SearchByDistParams) TotalLimitCapacity(ids []uint64) int { 65 if l := len(ids); l < params.totalLimit { 66 return l 67 } 68 return params.totalLimit 69 } 70 71 func (params *SearchByDistParams) Iterate() { 72 params.offset = params.totalLimit 73 params.limit *= DefaultSearchByDistLimitMultiplier 74 params.totalLimit = params.offset + params.limit 75 } 76 77 func (params *SearchByDistParams) MaxLimitReached() bool { 78 if params.maximumSearchLimit < 0 { 79 return false 80 } 81 82 return int64(params.totalLimit) > params.maximumSearchLimit 83 }