From 5062dca6e8fb3aa2421773c343009daa7622dddc Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Wed, 3 Jan 2024 17:41:50 +0300 Subject: [PATCH] Fixed - RSearch.search() method doesn't execute query with aliases properly. #5529 --- redisson/src/main/java/org/redisson/RedissonSearch.java | 5 +++++ redisson/src/test/java/org/redisson/RedissonSearchTest.java | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/redisson/src/main/java/org/redisson/RedissonSearch.java b/redisson/src/main/java/org/redisson/RedissonSearch.java index 09eabc7f5..99202ad70 100644 --- a/redisson/src/main/java/org/redisson/RedissonSearch.java +++ b/redisson/src/main/java/org/redisson/RedissonSearch.java @@ -379,13 +379,18 @@ public class RedissonSearch implements RSearch { if (!options.getReturnAttributes().isEmpty()) { args.add("RETURN"); args.add(options.getReturnAttributes().size()); + int pos = args.size() - 1; + int amount = 0; for (ReturnAttribute attr : options.getReturnAttributes()) { args.add(attr.getIdentifier()); + amount++; if (attr.getProperty() != null) { args.add("AS"); args.add(attr.getProperty()); + amount += 2; } } + args.set(pos, amount); } if (options.getSummarize() != null) { args.add("SUMMARIZE"); diff --git a/redisson/src/test/java/org/redisson/RedissonSearchTest.java b/redisson/src/test/java/org/redisson/RedissonSearchTest.java index c3f39486f..e27418f30 100644 --- a/redisson/src/test/java/org/redisson/RedissonSearchTest.java +++ b/redisson/src/test/java/org/redisson/RedissonSearchTest.java @@ -313,7 +313,9 @@ public class RedissonSearchTest extends DockerRedisStackTest { .distance(VectorDistParam.DistanceMetric.COSINE), FieldIndex.text("$.content").as("content")); - SearchResult r = s.search("text_index", "*", QueryOptions.defaults()); + SearchResult r = s.search("text_index", "*", QueryOptions.defaults() + .returnAttributes(new ReturnAttribute("vector", "vector11"), + new ReturnAttribute("vector2", "vector22"))); assertThat(r.getTotal()).isEqualTo(1); }