@@ -364,7 +364,7 @@ butil::Status DocumentIndex::Delete(const std::vector<int64_t>& delete_ids) {
364364}
365365
366366butil::Status DocumentIndex::Search (uint32_t topk, const std::string& query_string, bool use_range_filter,
367- int64_t start_id, int64_t end_id, bool use_id_filter,
367+ int64_t start_id, int64_t end_id, bool use_id_filter, bool query_unlimited,
368368 const std::vector<uint64_t >& alive_ids,
369369 const std::vector<std::string>& column_names,
370370 std::vector<pb::common::DocumentWithScore>& results) {
@@ -376,7 +376,7 @@ butil::Status DocumentIndex::Search(uint32_t topk, const std::string& query_stri
376376 return butil::Status (pb::error::EILLEGAL_PARAMTETERS, err_msg);
377377 }
378378
379- if (topk == 0 ) {
379+ if (!query_unlimited && topk == 0 ) {
380380 return butil::Status (pb::error::EILLEGAL_PARAMTETERS, " topk must be greater than 0" );
381381 }
382382
@@ -393,8 +393,9 @@ butil::Status DocumentIndex::Search(uint32_t topk, const std::string& query_stri
393393 // }
394394 // }
395395
396- auto search_result = ffi_bm25_search_with_column_names (index_path_, query_string, topk, alive_ids, use_id_filter,
397- use_range_filter, start_id, end_id, column_names);
396+ auto search_result =
397+ ffi_bm25_search_with_column_names (index_path_, query_string, topk, alive_ids, use_id_filter, use_range_filter,
398+ start_id, end_id, column_names, query_unlimited);
398399
399400 if (search_result.error_code == 0 ) {
400401 for (const auto & row_id_with_score : search_result.result ) {
@@ -1096,15 +1097,16 @@ butil::Status DocumentIndexWrapper::Search(const pb::common::Range& region_range
10961097 if (sibling_document_index != nullptr ) {
10971098 DINGO_LOG (INFO) << fmt::format (" [document_index.wrapper][id({})] search document in sibling document index." , Id ());
10981099 std::vector<pb::common::DocumentWithScore> results_1;
1099- auto status = sibling_document_index->Search (parameter.top_n (), parameter.query_string (), false , 0 , INT64_MAX,
1100- use_id_filter, alive_ids, column_names, results_1);
1100+ auto status =
1101+ sibling_document_index->Search (parameter.top_n (), parameter.query_string (), false , 0 , INT64_MAX, use_id_filter,
1102+ parameter.query_unlimited (), alive_ids, column_names, results_1);
11011103 if (!status.ok ()) {
11021104 return status;
11031105 }
11041106
11051107 std::vector<pb::common::DocumentWithScore> results_2;
11061108 status = document_index->Search (parameter.top_n (), parameter.query_string (), false , 0 , INT64_MAX, use_id_filter,
1107- alive_ids, column_names, results_2);
1109+ parameter. query_unlimited (), alive_ids, column_names, results_2);
11081110 if (!status.ok ()) {
11091111 return status;
11101112 }
@@ -1120,21 +1122,23 @@ butil::Status DocumentIndexWrapper::Search(const pb::common::Range& region_range
11201122
11211123 DINGO_LOG (INFO) << fmt::format (
11221124 " [document_index.wrapper][id({})] search document in document index with range_filter, range({}) "
1123- " query_string({}) top_n({}) min_document_id({}) max_document_id({})" ,
1125+ " query_string({}) top_n({}, query_unlimited({}) ) min_document_id({}) max_document_id({})" ,
11241126 Id (), DocumentCodec::DebugRange (false , region_range), parameter.query_string (), parameter.top_n (),
1125- min_document_id, max_document_id);
1127+ parameter. query_unlimited (), min_document_id, max_document_id);
11261128
11271129 // use range filter
11281130 return document_index->Search (parameter.top_n (), parameter.query_string (), true , min_document_id, max_document_id,
1129- use_id_filter, alive_ids, column_names, results);
1131+ use_id_filter, parameter. query_unlimited (), alive_ids, column_names, results);
11301132 }
11311133
11321134 DINGO_LOG (INFO) << fmt::format (
1133- " [document_index.wrapper][id({})] search document in document index, range({}) query_string({}) top_n({})" , Id (),
1134- DocumentCodec::DebugRange (false , region_range), parameter.query_string (), parameter.top_n ());
1135+ " [document_index.wrapper][id({})] search document in document index, range({}) query_string({}) top_n({}), "
1136+ " query_unlimited({})" ,
1137+ Id (), DocumentCodec::DebugRange (false , region_range), parameter.query_string (), parameter.top_n (),
1138+ parameter.query_unlimited ());
11351139
11361140 return document_index->Search (parameter.top_n (), parameter.query_string (), false , 0 , INT64_MAX, use_id_filter,
1137- alive_ids, column_names, results);
1141+ parameter. query_unlimited (), alive_ids, column_names, results);
11381142}
11391143
11401144// For document index, all node need to hold the index, so this function always return true.
0 commit comments