mirror of https://github.com/milvus-io/milvus.git
				
				
				
			fix: keep inner topK to avoid exceeding efSearch (#36284)
issue: #https://github.com/milvus-io/milvus/issues/36243 Signed-off-by: zhenshan.cao <zhenshan.cao@zilliz.com>pull/36310/head
							parent
							
								
									763fd0dfc5
								
							
						
					
					
						commit
						dcd904d2fa
					
				| 
						 | 
				
			
			@ -69,14 +69,10 @@ func parseSearchInfo(searchParamsPair []*commonpb.KeyValuePair, schema *schemapb
 | 
			
		|||
				return nil, 0, fmt.Errorf("%s [%s] is invalid", TopKKey, topKStr)
 | 
			
		||||
			}
 | 
			
		||||
			topK = externalLimit
 | 
			
		||||
		} else {
 | 
			
		||||
			if topKInParam < externalLimit {
 | 
			
		||||
				topK = externalLimit
 | 
			
		||||
		} else {
 | 
			
		||||
			topK = topKInParam
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	isIterator, _ := funcutil.GetAttrByKeyFromRepeatedKV(IteratorField, searchParamsPair)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2259,7 +2259,7 @@ func TestTaskSearch_parseSearchInfo(t *testing.T) {
 | 
			
		|||
		info, offset, err := parseSearchInfo(offsetParam, nil, rank)
 | 
			
		||||
		assert.NoError(t, err)
 | 
			
		||||
		assert.NotNil(t, info)
 | 
			
		||||
		assert.Equal(t, externalLimit, info.GetTopk())
 | 
			
		||||
		assert.Equal(t, int64(10), info.GetTopk())
 | 
			
		||||
		assert.Equal(t, int64(0), offset)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2446,13 +2446,13 @@ func TestTaskSearch_parseSearchInfo(t *testing.T) {
 | 
			
		|||
		schema := &schemapb.CollectionSchema{
 | 
			
		||||
			Fields: fields,
 | 
			
		||||
		}
 | 
			
		||||
		info, _, err := parseSearchInfo(normalParam, schema, false)
 | 
			
		||||
		info, _, err := parseSearchInfo(normalParam, schema, nil)
 | 
			
		||||
		assert.Nil(t, info)
 | 
			
		||||
		assert.Error(t, err)
 | 
			
		||||
		assert.True(t, strings.Contains(err.Error(), "exceeds configured max group size"))
 | 
			
		||||
 | 
			
		||||
		resetSearchParamsValue(normalParam, GroupSizeKey, `10`)
 | 
			
		||||
		info, _, err = parseSearchInfo(normalParam, schema, false)
 | 
			
		||||
		info, _, err = parseSearchInfo(normalParam, schema, nil)
 | 
			
		||||
		assert.NotNil(t, info)
 | 
			
		||||
		assert.NoError(t, err)
 | 
			
		||||
	})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue