Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions be/src/vec/functions/function_multi_match.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,17 @@ Status FunctionMultiMatch::execute_impl(FunctionContext* /*context*/, Block& blo
}

InvertedIndexQueryType get_query_type(const std::string& query_type) {
if (query_type == "phrase_prefix") {
if (query_type == "any") {
return InvertedIndexQueryType::MATCH_ANY_QUERY;
} else if (query_type == "all") {
return InvertedIndexQueryType::MATCH_ALL_QUERY;
} else if (query_type == "phrase") {
return InvertedIndexQueryType::MATCH_PHRASE_QUERY;
} else if (query_type == "phrase_prefix") {
return InvertedIndexQueryType::MATCH_PHRASE_PREFIX_QUERY;
} else {
return InvertedIndexQueryType::UNKNOWN_QUERY;
}
return InvertedIndexQueryType::UNKNOWN_QUERY;
}

Status FunctionMultiMatch::evaluate_inverted_index(
Expand All @@ -62,7 +69,6 @@ Status FunctionMultiMatch::evaluate_inverted_index(
"parameter query type incorrect for function multi_match: query_type = {}",
query_type);
}

// query
auto query_str = arguments[1].column->get_data_at(0);
auto param_type = arguments[1].type->get_type_as_type_descriptor().type;
Expand Down
144 changes: 144 additions & 0 deletions regression-test/data/inverted_index_p0/test_index_multi_match.out
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,147 @@
-- !sql --
44

-- !sql --
30

-- !sql --
30

-- !sql --
30

-- !sql --
30

-- !sql --
5

-- !sql --
5

-- !sql --
5

-- !sql --
5

-- !sql --
30

-- !sql --
30

-- !sql --
30

-- !sql --
30

-- !sql --
5

-- !sql --
5

-- !sql --
5

-- !sql --
5

-- !sql --
30

-- !sql --
30

-- !sql --
30

-- !sql --
30

-- !sql --
5

-- !sql --
5

-- !sql --
5

-- !sql --
5

-- !sql --
30

-- !sql --
30

-- !sql --
30

-- !sql --
30

-- !sql --
5

-- !sql --
5

-- !sql --
5

-- !sql --
5

-- !sql --
30

-- !sql --
30

-- !sql --
30

-- !sql --
30

-- !sql --
5

-- !sql --
5

-- !sql --
5

-- !sql --
5

-- !sql --
30

-- !sql --
30

-- !sql --
30

-- !sql --
30

-- !sql --
5

-- !sql --
5

-- !sql --
5

-- !sql --
5

Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,63 @@ suite("test_index_multi_match", "p0"){
qt_sql """ select count() from ${indexTbName4} where multi_match(clientip, request, status, size, 'phrase_prefix', '2'); """
qt_sql """ select count() from ${indexTbName4} where multi_match(clientip, request, status, size, 'phrase_prefix', 'a'); """

// match_any
qt_sql """ select count() from ${indexTbName1} where (clientip match_any '2' or request match_any '2' or status match_any '2' or size match_any '2'); """
qt_sql """ select count() from ${indexTbName2} where (clientip match_any '2' or request match_any '2' or status match_any '2' or size match_any '2'); """
qt_sql """ select count() from ${indexTbName3} where (clientip match_any '2' or request match_any '2' or status match_any '2' or size match_any '2'); """
qt_sql """ select count() from ${indexTbName4} where (clientip match_any '2' or request match_any '2' or status match_any '2' or size match_any '2'); """
qt_sql """ select count() from ${indexTbName1} where (clientip match_any 'a' or request match_any 'a' or status match_any 'a' or size match_any 'a'); """
qt_sql """ select count() from ${indexTbName2} where (clientip match_any 'a' or request match_any 'a' or status match_any 'a' or size match_any 'a'); """
qt_sql """ select count() from ${indexTbName3} where (clientip match_any 'a' or request match_any 'a' or status match_any 'a' or size match_any 'a'); """
qt_sql """ select count() from ${indexTbName4} where (clientip match_any 'a' or request match_any 'a' or status match_any 'a' or size match_any 'a'); """

qt_sql """ select count() from ${indexTbName1} where multi_match(clientip, request, status, size, 'any', '2'); """
qt_sql """ select count() from ${indexTbName2} where multi_match(clientip, request, status, size, 'any', '2'); """
qt_sql """ select count() from ${indexTbName3} where multi_match(clientip, request, status, size, 'any', '2'); """
qt_sql """ select count() from ${indexTbName4} where multi_match(clientip, request, status, size, 'any', '2'); """
qt_sql """ select count() from ${indexTbName1} where multi_match(clientip, request, status, size, 'any', 'a'); """
qt_sql """ select count() from ${indexTbName2} where multi_match(clientip, request, status, size, 'any', 'a'); """
qt_sql """ select count() from ${indexTbName3} where multi_match(clientip, request, status, size, 'any', 'a'); """
qt_sql """ select count() from ${indexTbName4} where multi_match(clientip, request, status, size, 'any', 'a'); """

// match_all
qt_sql """ select count() from ${indexTbName1} where (clientip match_all '2' or request match_all '2' or status match_all '2' or size match_all '2'); """
qt_sql """ select count() from ${indexTbName2} where (clientip match_all '2' or request match_all '2' or status match_all '2' or size match_all '2'); """
qt_sql """ select count() from ${indexTbName3} where (clientip match_all '2' or request match_all '2' or status match_all '2' or size match_all '2'); """
qt_sql """ select count() from ${indexTbName4} where (clientip match_all '2' or request match_all '2' or status match_all '2' or size match_all '2'); """
qt_sql """ select count() from ${indexTbName1} where (clientip match_all 'a' or request match_all 'a' or status match_all 'a' or size match_all 'a'); """
qt_sql """ select count() from ${indexTbName2} where (clientip match_all 'a' or request match_all 'a' or status match_all 'a' or size match_all 'a'); """
qt_sql """ select count() from ${indexTbName3} where (clientip match_all 'a' or request match_all 'a' or status match_all 'a' or size match_all 'a'); """
qt_sql """ select count() from ${indexTbName4} where (clientip match_all 'a' or request match_all 'a' or status match_all 'a' or size match_all 'a'); """

qt_sql """ select count() from ${indexTbName1} where multi_match(clientip, request, status, size, 'all', '2'); """
qt_sql """ select count() from ${indexTbName2} where multi_match(clientip, request, status, size, 'all', '2'); """
qt_sql """ select count() from ${indexTbName3} where multi_match(clientip, request, status, size, 'all', '2'); """
qt_sql """ select count() from ${indexTbName4} where multi_match(clientip, request, status, size, 'all', '2'); """
qt_sql """ select count() from ${indexTbName1} where multi_match(clientip, request, status, size, 'all', 'a'); """
qt_sql """ select count() from ${indexTbName2} where multi_match(clientip, request, status, size, 'all', 'a'); """
qt_sql """ select count() from ${indexTbName3} where multi_match(clientip, request, status, size, 'all', 'a'); """
qt_sql """ select count() from ${indexTbName4} where multi_match(clientip, request, status, size, 'all', 'a'); """

// match_phrase
qt_sql """ select count() from ${indexTbName1} where (clientip match_phrase '2' or request match_phrase '2' or status match_phrase '2' or size match_phrase '2'); """
qt_sql """ select count() from ${indexTbName2} where (clientip match_phrase '2' or request match_phrase '2' or status match_phrase '2' or size match_phrase '2'); """
qt_sql """ select count() from ${indexTbName3} where (clientip match_phrase '2' or request match_phrase '2' or status match_phrase '2' or size match_phrase '2'); """
qt_sql """ select count() from ${indexTbName4} where (clientip match_phrase '2' or request match_phrase '2' or status match_phrase '2' or size match_phrase '2'); """
qt_sql """ select count() from ${indexTbName1} where (clientip match_phrase 'a' or request match_phrase 'a' or status match_phrase 'a' or size match_phrase 'a'); """
qt_sql """ select count() from ${indexTbName2} where (clientip match_phrase 'a' or request match_phrase 'a' or status match_phrase 'a' or size match_phrase 'a'); """
qt_sql """ select count() from ${indexTbName3} where (clientip match_phrase 'a' or request match_phrase 'a' or status match_phrase 'a' or size match_phrase 'a'); """
qt_sql """ select count() from ${indexTbName4} where (clientip match_phrase 'a' or request match_phrase 'a' or status match_phrase 'a' or size match_phrase 'a'); """

qt_sql """ select count() from ${indexTbName1} where multi_match(clientip, request, status, size, 'phrase', '2'); """
qt_sql """ select count() from ${indexTbName2} where multi_match(clientip, request, status, size, 'phrase', '2'); """
qt_sql """ select count() from ${indexTbName3} where multi_match(clientip, request, status, size, 'phrase', '2'); """
qt_sql """ select count() from ${indexTbName4} where multi_match(clientip, request, status, size, 'phrase', '2'); """
qt_sql """ select count() from ${indexTbName1} where multi_match(clientip, request, status, size, 'phrase', 'a'); """
qt_sql """ select count() from ${indexTbName2} where multi_match(clientip, request, status, size, 'phrase', 'a'); """
qt_sql """ select count() from ${indexTbName3} where multi_match(clientip, request, status, size, 'phrase', 'a'); """
qt_sql """ select count() from ${indexTbName4} where multi_match(clientip, request, status, size, 'phrase', 'a'); """

} finally {
//try_sql("DROP TABLE IF EXISTS ${testTable}")
}
Expand Down