Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
LiuRuoyu01 committed Jan 2, 2025
1 parent d5862d2 commit 7ba55c2
Show file tree
Hide file tree
Showing 12 changed files with 550 additions and 2 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ option(BUILD_BENCHMARK "Build benchmark" ON)
option(BUILD_INTEGRATION_TESTS "Build integration test" ON)
option(BUILD_UNIT_TESTS "Build unit test" ON)
option(BUILD_SDK_EXAMPLE "Build sdk example" ON)
option(BUILD_PYTHON_SDK "Build python sdk" OFF)
option(BUILD_PYTHON_SDK "Build python sdk" ON)
option(DINGOSDK_INSTALL "Intall dingosdk header and libary" ON)

set(CMAKE_CXX_STANDARD 17)
Expand Down
8 changes: 7 additions & 1 deletion include/dingosdk/document.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ class DocValue {
double DoubleValue() const;
std::string StringValue() const;
std::string BytesValue() const;
bool BoolValue()const;
bool BoolValue() const;
std::string DatetimeValue() const;

std::string ToString() const;
Expand Down Expand Up @@ -157,6 +157,8 @@ struct DocSearchParam {
std::vector<std::string> column_names;
bool with_scalar_data{false};
std::vector<std::string> selected_keys;
//search all need limit
int32_t query_unlimited{40960};
};

struct DocWithStore {
Expand Down Expand Up @@ -229,6 +231,10 @@ class DocumentClient {
Status SearchByIndexName(int64_t schema_id, const std::string& index_name, const DocSearchParam& search_param,
DocSearchResult& out_result);

Status SearchAllByIndexId(int64_t index_id, const DocSearchParam& search_param, DocSearchResult& out_result);
Status SearchAllByIndexName(int64_t schema_id, const std::string& index_name, const DocSearchParam& search_param,
DocSearchResult& out_result);

Status DeleteByIndexId(int64_t index_id, const std::vector<int64_t>& doc_ids,
std::vector<DocDeleteResult>& out_result);
Status DeleteByIndexName(int64_t schema_id, const std::string& index_name, const std::vector<int64_t>& doc_ids,
Expand Down
145 changes: 145 additions & 0 deletions src/example/sdk_document_example.cc
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,149 @@ static void DocumentSearch(bool use_index_name = false) {
}
}

static void DocumentSearchAll(bool use_index_name = false) {
{
dingodb::sdk::DocSearchParam param;
param.with_scalar_data = true;
param.query_string = "discover";
param.use_id_filter = false;

Status tmp;
DocSearchResult result;
if (use_index_name) {
tmp = g_doc_client->SearchAllByIndexName(g_schema_id, g_index_name, param, result);
} else {
tmp = g_doc_client->SearchAllByIndexId(g_index_id, param, result);
}

DINGO_LOG(INFO) << "vector search discover status: " << tmp.ToString();
DINGO_LOG(INFO) << "vector search discover result:" << result.ToString();
if (tmp.ok()) {
CHECK_EQ(result.doc_sores.size(), 1);
}
}

{
dingodb::sdk::DocSearchParam param;
param.with_scalar_data = true;
param.query_string = "of";
param.use_id_filter = false;

Status tmp;
DocSearchResult result;
if (use_index_name) {
tmp = g_doc_client->SearchAllByIndexName(g_schema_id, g_index_name, param, result);
} else {
tmp = g_doc_client->SearchAllByIndexId(g_index_id, param, result);
}

DINGO_LOG(INFO) << "vector search of with limit 10 status: " << tmp.ToString();
DINGO_LOG(INFO) << "vector search of with limit 10 result:" << result.ToString();
if (tmp.ok()) {
CHECK_EQ(result.doc_sores.size(), 5);
}
}

{
dingodb::sdk::DocSearchParam param;
param.with_scalar_data = true;
param.query_string = "of";
param.use_id_filter = true;
param.query_unlimited = 4096;
param.doc_ids = {
13,
15,
};

Status tmp;
DocSearchResult result;
if (use_index_name) {
tmp = g_doc_client->SearchAllByIndexName(g_schema_id, g_index_name, param, result);
} else {
tmp = g_doc_client->SearchAllByIndexId(g_index_id, param, result);
}

DINGO_LOG(INFO) << "vector search of with id filter status: " << tmp.ToString();
DINGO_LOG(INFO) << "vector search of with id filter result:" << result.ToString();
if (tmp.ok()) {
CHECK_EQ(result.doc_sores.size(), 2);
}
}

{
dingodb::sdk::DocSearchParam param;
param.with_scalar_data = true;
param.query_string = R"(text:"of" AND i64: >= 1013)";
param.use_id_filter = true;
param.query_unlimited = 4096;
param.doc_ids = {
9,
11,
13,
15,
};

Status tmp;
DocSearchResult result;
if (use_index_name) {
tmp = g_doc_client->SearchAllByIndexName(g_schema_id, g_index_name, param, result);
} else {
tmp = g_doc_client->SearchAllByIndexId(g_index_id, param, result);
}

DINGO_LOG(INFO) << "vector search of with id filter status: " << tmp.ToString();
DINGO_LOG(INFO) << "vector search of with id filter result:" << result.ToString();
if (tmp.ok()) {
CHECK_EQ(result.doc_sores.size(), 2);
}
}

{
dingodb::sdk::DocSearchParam param;
param.with_scalar_data = true;
param.query_string = R"( bool:true)";
param.use_id_filter = true;
param.doc_ids = {15, 17, 19, 21};
param.query_unlimited = 4096;

Status tmp;
DocSearchResult result;
if (use_index_name) {
tmp = g_doc_client->SearchAllByIndexName(g_schema_id, g_index_name, param, result);
} else {
tmp = g_doc_client->SearchAllByIndexId(g_index_id, param, result);
}

DINGO_LOG(INFO) << "vector search of with id filter status: " << tmp.ToString();
DINGO_LOG(INFO) << "vector search of with id filter result:" << result.ToString();
if (tmp.ok()) {
CHECK_EQ(result.doc_sores.size(), 2);
}
}

{
dingodb::sdk::DocSearchParam param;
param.with_scalar_data = true;
param.query_string = fmt::format("{}:\"{}\"", "datetime", time_1);
param.use_id_filter = true;
param.doc_ids = {9, 11, 13, 15};

Status tmp;
DocSearchResult result;
if (use_index_name) {
tmp = g_doc_client->SearchAllByIndexName(g_schema_id, g_index_name, param, result);
} else {
tmp = g_doc_client->SearchAllByIndexId(g_index_id, param, result);
}

DINGO_LOG(INFO) << "vector search of with id filter status: " << tmp.ToString();
DINGO_LOG(INFO) << "vector search of with id filter result:" << result.ToString();
if (tmp.ok()) {
CHECK_EQ(result.doc_sores.size(), 4);
}
}
}

static void DocumentQuey(bool use_index_name = false) {
dingodb::sdk::DocQueryParam param;
param.doc_ids = g_doc_ids;
Expand Down Expand Up @@ -578,6 +721,7 @@ int main(int argc, char* argv[]) {

DocumentAdd();
DocumentSearch();
DocumentSearchAll();
DocumentQuey();
DocumentGetBorder();
DocumentScanQuery();
Expand All @@ -594,6 +738,7 @@ int main(int argc, char* argv[]) {

DocumentAdd(true);
DocumentSearch(true);
DocumentSearchAll(true);
DocumentQuey(true);
DocumentGetBorder(true);
DocumentScanQuery(true);
Expand Down
1 change: 1 addition & 0 deletions src/sdk/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ set(SDK_SRCS
document/document_get_index_metrics_task.cc
document/document_scan_query_task.cc
document/document_search_task.cc
document/document_search_all_task.cc
document/document_update_task.cc
document/document_get_auto_increment_id_task.cc
document/document_update_auto_increment_task.cc
Expand Down
17 changes: 17 additions & 0 deletions src/sdk/document/document_client.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "sdk/document/document_get_index_metrics_task.h"
#include "sdk/document/document_index_cache.h"
#include "sdk/document/document_scan_query_task.h"
#include "sdk/document/document_search_all_task.h"
#include "sdk/document/document_search_task.h"
#include "sdk/document/document_update_auto_increment_task.h"
#include "sdk/document/document_update_task.h"
Expand Down Expand Up @@ -82,6 +83,22 @@ Status DocumentClient::SearchByIndexName(int64_t schema_id, const std::string& i
return task.Run();
}

Status DocumentClient::SearchAllByIndexId(int64_t index_id, const DocSearchParam& search_param,
DocSearchResult& out_result) {
DocumentSearchAllTask task(stub_, index_id, search_param, out_result);
return task.Run();
}

Status DocumentClient::SearchAllByIndexName(int64_t schema_id, const std::string& index_name,
const DocSearchParam& search_param, DocSearchResult& out_result) {
int64_t index_id{0};
DINGO_RETURN_NOT_OK(
stub_.GetDocumentIndexCache()->GetIndexIdByKey(EncodeDocumentIndexCacheKey(schema_id, index_name), index_id));
CHECK_GT(index_id, 0);
DocumentSearchAllTask task(stub_, index_id, search_param, out_result);
return task.Run();
}

Status DocumentClient::DeleteByIndexId(int64_t index_id, const std::vector<int64_t>& doc_ids,
std::vector<DocDeleteResult>& out_result) {
DocumentDeleteTask task(stub_, index_id, doc_ids, out_result);
Expand Down
Loading

0 comments on commit 7ba55c2

Please sign in to comment.