diff --git a/be/src/vec/functions/function_multi_match.cpp b/be/src/vec/functions/function_multi_match.cpp index e2c8a4a4a83336..02697dd4b0aafe 100644 --- a/be/src/vec/functions/function_multi_match.cpp +++ b/be/src/vec/functions/function_multi_match.cpp @@ -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( @@ -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; diff --git a/regression-test/data/inverted_index_p0/test_index_multi_match.out b/regression-test/data/inverted_index_p0/test_index_multi_match.out index 77e3c86623e17a..86762cae36f461 100644 --- a/regression-test/data/inverted_index_p0/test_index_multi_match.out +++ b/regression-test/data/inverted_index_p0/test_index_multi_match.out @@ -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 + diff --git a/regression-test/suites/inverted_index_p0/test_index_multi_match.groovy b/regression-test/suites/inverted_index_p0/test_index_multi_match.groovy index 884fbaffa62275..75917b7e88a9a3 100644 --- a/regression-test/suites/inverted_index_p0/test_index_multi_match.groovy +++ b/regression-test/suites/inverted_index_p0/test_index_multi_match.groovy @@ -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}") }