github.com/milvus-io/milvus-sdk-go/v2@v2.4.1/entity/index_sparse_test.go (about) 1 package entity 2 3 import ( 4 "encoding/json" 5 "testing" 6 7 "github.com/stretchr/testify/suite" 8 ) 9 10 type SparseIndexSuite struct { 11 suite.Suite 12 } 13 14 func (s *SparseIndexSuite) TestSparseInverted() { 15 s.Run("bad_drop_ratio", func() { 16 _, err := NewIndexSparseInverted(IP, -1) 17 s.Error(err) 18 19 _, err = NewIndexSparseInverted(IP, 1.0) 20 s.Error(err) 21 }) 22 23 s.Run("normal_case", func() { 24 idx, err := NewIndexSparseInverted(IP, 0.2) 25 s.Require().NoError(err) 26 27 s.Equal("SparseInverted", idx.Name()) 28 s.Equal(SparseInverted, idx.IndexType()) 29 params := idx.Params() 30 31 s.Equal("SPARSE_INVERTED_INDEX", params[tIndexType]) 32 s.Equal("IP", params[tMetricType]) 33 paramsVal, has := params[tParams] 34 s.True(has) 35 m := make(map[string]string) 36 err = json.Unmarshal([]byte(paramsVal), &m) 37 s.Require().NoError(err) 38 dropRatio, ok := m["drop_ratio_build"] 39 s.True(ok) 40 s.Equal("0.2", dropRatio) 41 }) 42 43 s.Run("search_param", func() { 44 _, err := NewIndexSparseInvertedSearchParam(-1) 45 s.Error(err) 46 _, err = NewIndexSparseInvertedSearchParam(1.0) 47 s.Error(err) 48 49 sp, err := NewIndexSparseInvertedSearchParam(0.2) 50 s.Require().NoError(err) 51 s.EqualValues(0.2, sp.Params()["drop_ratio_search"]) 52 }) 53 } 54 55 func (s *SparseIndexSuite) TestSparseWAND() { 56 s.Run("bad_drop_ratio", func() { 57 _, err := NewIndexSparseWAND(IP, -1) 58 s.Error(err) 59 60 _, err = NewIndexSparseWAND(IP, 1.0) 61 s.Error(err) 62 }) 63 64 s.Run("normal_case", func() { 65 idx, err := NewIndexSparseWAND(IP, 0.2) 66 s.Require().NoError(err) 67 68 s.Equal("SparseWAND", idx.Name()) 69 s.Equal(SparseWAND, idx.IndexType()) 70 params := idx.Params() 71 72 s.Equal("SPARSE_WAND", params[tIndexType]) 73 s.Equal("IP", params[tMetricType]) 74 paramsVal, has := params[tParams] 75 s.True(has) 76 m := make(map[string]string) 77 err = json.Unmarshal([]byte(paramsVal), &m) 78 s.Require().NoError(err) 79 dropRatio, ok := m["drop_ratio_build"] 80 s.True(ok) 81 s.Equal("0.2", dropRatio) 82 }) 83 84 s.Run("search_param", func() { 85 _, err := NewIndexSparseWANDSearchParam(-1) 86 s.Error(err) 87 _, err = NewIndexSparseWANDSearchParam(1.0) 88 s.Error(err) 89 90 sp, err := NewIndexSparseWANDSearchParam(0.2) 91 s.Require().NoError(err) 92 s.EqualValues(0.2, sp.Params()["drop_ratio_search"]) 93 }) 94 } 95 96 func TestSparseIndex(t *testing.T) { 97 suite.Run(t, new(SparseIndexSuite)) 98 }