@@ -55,12 +55,11 @@ main(int argc, char* argv[]) {
5555 util::CheckStatus (" create collection: " + collection_name, status);
5656
5757 // create index
58- milvus::IndexDesc index_dense (field_dense, " " , milvus::IndexType::DISKANN, milvus::MetricType::COSINE);
59- milvus::IndexDesc index_sparse (field_sparse, " " , milvus::IndexType::SPARSE_INVERTED_INDEX, milvus::MetricType::IP);
60- status = client->CreateIndex (milvus::CreateIndexRequest ()
61- .WithCollectionName (collection_name)
62- .AddIndex (std::move (index_dense))
63- .AddIndex (std::move (index_sparse)));
58+ std::vector<milvus::IndexDesc> indexes = {
59+ milvus::IndexDesc (field_dense, " " , milvus::IndexType::DISKANN, milvus::MetricType::COSINE),
60+ milvus::IndexDesc (field_sparse, " " , milvus::IndexType::SPARSE_INVERTED_INDEX, milvus::MetricType::IP)};
61+ status = client->CreateIndex (
62+ milvus::CreateIndexRequest ().WithCollectionName (collection_name).WithIndexes (std::move (indexes)));
6463 util::CheckStatus (" create indexes on collection" , status);
6564
6665 // tell server prepare to load collection
@@ -102,35 +101,32 @@ main(int argc, char* argv[]) {
102101
103102 {
104103 // do hybrid search
105- auto request =
106- milvus::HybridSearchRequest ()
107- .WithCollectionName (collection_name)
108- .WithLimit (10 )
109- .AddOutputField (field_flag)
110- .AddOutputField (field_text)
111- // .AddOutputField(field_sparse)
112- // set to BOUNDED level to accept data inconsistence within a time window(default is 5 seconds)
113- .WithConsistencyLevel (milvus::ConsistencyLevel::BOUNDED);
114-
115- // sub search request 1 for dense vector
116104 auto sub_req1 = milvus::SubSearchRequest ()
117105 .WithLimit (5 )
118106 .WithAnnsField (field_dense)
119107 .WithFilter (field_flag + " == 5" )
120108 .AddFloatVector (util::GenerateFloatVector (dimension));
121- request.AddSubRequest (std::make_shared<milvus::SubSearchRequest>(std::move (sub_req1)));
122109
123- // sub search request 2 for sparse vector
124110 auto sub_req2 = milvus::SubSearchRequest ()
125111 .WithLimit (15 )
126112 .WithAnnsField (field_sparse)
127113 .WithFilter (field_flag + " in [1, 3]" )
128114 .AddSparseVector (util::GenerateSparseVector (50 ));
129- request.AddSubRequest (std::make_shared<milvus::SubSearchRequest>(std::move (sub_req2)));
130115
131- // define reranker
132116 auto reranker = std::make_shared<milvus::WeightedRerank>(std::vector<float >{0.5 , 0.5 });
133- request.SetRerank (reranker);
117+
118+ auto request =
119+ milvus::HybridSearchRequest ()
120+ .WithCollectionName (collection_name)
121+ .WithLimit (10 )
122+ .AddSubRequest (std::make_shared<milvus::SubSearchRequest>(std::move (sub_req1)))
123+ .AddSubRequest (std::make_shared<milvus::SubSearchRequest>(std::move (sub_req2)))
124+ .WithRerank (reranker)
125+ .AddOutputField (field_flag)
126+ .AddOutputField (field_text)
127+ // .AddOutputField(field_sparse)
128+ // set to BOUNDED level to accept data inconsistence within a time window(default is 5 seconds)
129+ .WithConsistencyLevel (milvus::ConsistencyLevel::BOUNDED);
134130
135131 milvus::SearchResponse response;
136132 status = client->HybridSearch (request, response);
0 commit comments