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  }