mirror of
https://github.com/typesense/typesense.git
synced 2025-05-22 06:40:30 +08:00
Update parse_vector_query_str
This commit is contained in:
parent
8b01c5cd85
commit
a44f996a1b
@ -33,5 +33,5 @@ public:
|
||||
static Option<bool> parse_vector_query_str(const std::string& vector_query_str, vector_query_t& vector_query,
|
||||
const bool is_wildcard_query,
|
||||
const Collection* coll,
|
||||
const bool allow_empty_query = false);
|
||||
const bool allow_empty_query);
|
||||
};
|
@ -1250,7 +1250,7 @@ Option<nlohmann::json> Collection::search(std::string raw_query,
|
||||
bool is_wildcard_query = (raw_query == "*" || raw_query.empty());
|
||||
|
||||
auto parse_vector_op = VectorQueryOps::parse_vector_query_str(vector_query_str, vector_query,
|
||||
is_wildcard_query, this);
|
||||
is_wildcard_query, this, false);
|
||||
if(!parse_vector_op.ok()) {
|
||||
return Option<nlohmann::json>(400, parse_vector_op.error());
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ protected:
|
||||
|
||||
TEST_F(VectorQueryOpsTest, ParseVectorQueryString) {
|
||||
vector_query_t vector_query;
|
||||
auto parsed = VectorQueryOps::parse_vector_query_str("vec:([0.34, 0.66, 0.12, 0.68], k: 10)", vector_query, false, nullptr);
|
||||
auto parsed = VectorQueryOps::parse_vector_query_str("vec:([0.34, 0.66, 0.12, 0.68], k: 10)", vector_query, false, nullptr, false);
|
||||
ASSERT_TRUE(parsed.ok());
|
||||
ASSERT_EQ("vec", vector_query.field_name);
|
||||
ASSERT_EQ(10, vector_query.k);
|
||||
@ -28,49 +28,49 @@ TEST_F(VectorQueryOpsTest, ParseVectorQueryString) {
|
||||
}
|
||||
|
||||
vector_query._reset();
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([0.34, 0.66, 0.12, 0.68], k: 10)", vector_query, false, nullptr);
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([0.34, 0.66, 0.12, 0.68], k: 10)", vector_query, false, nullptr, false);
|
||||
ASSERT_TRUE(parsed.ok());
|
||||
|
||||
vector_query._reset();
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([])", vector_query, false, nullptr);
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([])", vector_query, false, nullptr, false);
|
||||
ASSERT_FALSE(parsed.ok());
|
||||
ASSERT_EQ("When a vector query value is empty, an `id` parameter must be present.", parsed.error());
|
||||
|
||||
// cannot pass both vector and id
|
||||
vector_query._reset();
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([0.34, 0.66, 0.12, 0.68], id: 10)", vector_query, false, nullptr);
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([0.34, 0.66, 0.12, 0.68], id: 10)", vector_query, false, nullptr, false);
|
||||
ASSERT_FALSE(parsed.ok());
|
||||
ASSERT_EQ("Malformed vector query string: cannot pass both vector query and `id` parameter.", parsed.error());
|
||||
|
||||
vector_query._reset();
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([], k: 10)", vector_query, false, nullptr);
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([], k: 10)", vector_query, false, nullptr, false);
|
||||
ASSERT_TRUE(parsed.ok());
|
||||
|
||||
vector_query._reset();
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([], k: 10)", vector_query, true, nullptr);
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([], k: 10)", vector_query, true, nullptr, false);
|
||||
ASSERT_TRUE(parsed.ok());
|
||||
|
||||
vector_query._reset();
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:[0.34, 0.66, 0.12, 0.68], k: 10)", vector_query, false, nullptr);
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:[0.34, 0.66, 0.12, 0.68], k: 10)", vector_query, false, nullptr, false);
|
||||
ASSERT_FALSE(parsed.ok());
|
||||
ASSERT_EQ("Malformed vector query string.", parsed.error());
|
||||
|
||||
vector_query._reset();
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([0.34, 0.66, 0.12, 0.68], k: 10", vector_query, false, nullptr);
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([0.34, 0.66, 0.12, 0.68], k: 10", vector_query, false, nullptr, false);
|
||||
ASSERT_TRUE(parsed.ok());
|
||||
|
||||
vector_query._reset();
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:(0.34, 0.66, 0.12, 0.68, k: 10)", vector_query, false, nullptr);
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:(0.34, 0.66, 0.12, 0.68, k: 10)", vector_query, false, nullptr, false);
|
||||
ASSERT_FALSE(parsed.ok());
|
||||
ASSERT_EQ("Malformed vector query string.", parsed.error());
|
||||
|
||||
vector_query._reset();
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([0.34, 0.66, 0.12, 0.68], )", vector_query, false, nullptr);
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec:([0.34, 0.66, 0.12, 0.68], )", vector_query, false, nullptr, false);
|
||||
ASSERT_FALSE(parsed.ok());
|
||||
ASSERT_EQ("Malformed vector query string.", parsed.error());
|
||||
|
||||
vector_query._reset();
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec([0.34, 0.66, 0.12, 0.68])", vector_query, false, nullptr);
|
||||
parsed = VectorQueryOps::parse_vector_query_str("vec([0.34, 0.66, 0.12, 0.68])", vector_query, false, nullptr, false);
|
||||
ASSERT_FALSE(parsed.ok());
|
||||
ASSERT_EQ("Malformed vector query string.", parsed.error());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user