Skip to content

Commit b2bee0e

Browse files
committed
Support RediSearch DIALECT 5 (#3831)
- [x] Avoid escaping at query time - [ ] Alias for tag fields (EXACT) - [x] Avoid repeating for numeral equality - [x] New dialect (5)
1 parent 5277ed0 commit b2bee0e

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

src/main/java/redis/clients/jedis/search/querybuilder/Values.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,14 @@ public static RangeValue between(int from, int to) {
4141
return new LongRangeValue(from, to);
4242
}
4343

44+
// TODO: change to simpler [d] available since RedisStack 7.4.0-rc1;
45+
// currently kept for backward compatibility
4446
public static RangeValue eq(double d) {
4547
return new DoubleRangeValue(d, d);
4648
}
4749

50+
// TODO: change to simpler [i] available since RedisStack 7.4.0-rc1;
51+
// currently kept for backward compatibility
4852
public static RangeValue eq(int i) {
4953
return new LongRangeValue(i, i);
5054
}

src/test/java/redis/clients/jedis/modules/search/SearchTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,9 @@ public void testQueryParams() {
412412

413413
Query query = new Query("@numval:[$min $max]").addParam("min", 1).addParam("max", 2).dialect(2);
414414
assertEquals(2, client.ftSearch(index, query).getTotalResults());
415+
416+
query = new Query("@numval:[$eq]").addParam("eq", 2).dialect(5);
417+
assertEquals(1, client.ftSearch(index, query).getTotalResults());
415418
}
416419

417420
@Test
@@ -532,6 +535,14 @@ public void testJsonWithAlias() {
532535
res = client.ftSearch(index, new Query("@num:[0 10]"));
533536
assertEquals(1, res.getTotalResults());
534537
assertEquals("king:2", res.getDocuments().get(0).getId());
538+
539+
res = client.ftSearch(index, new Query("@num:[42 42]"));
540+
assertEquals(1, res.getTotalResults());
541+
assertEquals("king:1", res.getDocuments().get(0).getId());
542+
543+
res = client.ftSearch(index, new Query("@num:[42]").dialect(5));
544+
assertEquals(1, res.getTotalResults());
545+
assertEquals("king:1", res.getDocuments().get(0).getId());
535546
}
536547

537548
@Test
@@ -773,6 +784,7 @@ public void getTagField() {
773784
assertEquals(1, client.ftSearch(index, new Query("@category:{yellow}")).getTotalResults());
774785
assertEquals(0, client.ftSearch(index, new Query("@category:{purple}")).getTotalResults());
775786
assertEquals(1, client.ftSearch(index, new Query("@category:{orange\\;purple}")).getTotalResults());
787+
assertEquals(1, client.ftSearch(index, new Query("@category:{orange;purple}").dialect(5)).getTotalResults());
776788
assertEquals(4, client.ftSearch(index, new Query("hello")).getTotalResults());
777789

778790
assertEquals(new HashSet<>(Arrays.asList("red", "blue", "green", "yellow", "orange;purple")),
@@ -814,6 +826,7 @@ public void testGetTagFieldWithNonDefaultSeparator() {
814826
assertEquals(1, client.ftSearch(index, new Query("hello @category:{yellow}")).getTotalResults());
815827
assertEquals(0, client.ftSearch(index, new Query("@category:{purple}")).getTotalResults());
816828
assertEquals(1, client.ftSearch(index, new Query("@category:{orange\\,purple}")).getTotalResults());
829+
assertEquals(1, client.ftSearch(index, new Query("@category:{orange,purple}").dialect(5)).getTotalResults());
817830
assertEquals(4, client.ftSearch(index, new Query("hello")).getTotalResults());
818831

819832
assertEquals(new HashSet<>(Arrays.asList("red", "blue", "green", "yellow", "orange,purple")),

src/test/java/redis/clients/jedis/modules/search/SearchWithParamsTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,9 @@ public void testQueryParams() {
608608
assertEquals(2, client.ftSearch(index, "@numval:[$min $max]",
609609
FTSearchParams.searchParams().params(paramValues)
610610
.dialect(2)).getTotalResults());
611+
612+
assertEquals(1, client.ftSearch(index, "@numval:[$eq]",
613+
FTSearchParams.searchParams().addParam("eq", 2).dialect(5)).getTotalResults());
611614
}
612615

613616
@Test
@@ -665,6 +668,14 @@ public void testJsonWithAlias() {
665668
res = client.ftSearch(index, "@num:[0 10]");
666669
assertEquals(1, res.getTotalResults());
667670
assertEquals("king:2", res.getDocuments().get(0).getId());
671+
672+
res = client.ftSearch(index, "@num:[42 42]", FTSearchParams.searchParams());
673+
assertEquals(1, res.getTotalResults());
674+
assertEquals("king:1", res.getDocuments().get(0).getId());
675+
676+
res = client.ftSearch(index, "@num:[42]", FTSearchParams.searchParams().dialect(5));
677+
assertEquals(1, res.getTotalResults());
678+
assertEquals("king:1", res.getDocuments().get(0).getId());
668679
}
669680

670681
@Test
@@ -868,6 +879,8 @@ public void getTagField() {
868879
assertEquals(1, client.ftSearch(index, "@category:{yellow}").getTotalResults());
869880
assertEquals(0, client.ftSearch(index, "@category:{purple}").getTotalResults());
870881
assertEquals(1, client.ftSearch(index, "@category:{orange\\;purple}").getTotalResults());
882+
assertEquals(1, client.ftSearch(index, "@category:{orange;purple}",
883+
FTSearchParams.searchParams().dialect(5)).getTotalResults());
871884
assertEquals(4, client.ftSearch(index, "hello").getTotalResults());
872885

873886
assertEquals(new HashSet<>(Arrays.asList("red", "blue", "green", "yellow", "orange;purple")),
@@ -907,6 +920,8 @@ public void testGetTagFieldWithNonDefaultSeparator() {
907920
assertEquals(1, client.ftSearch(index, "hello @category:{yellow}").getTotalResults());
908921
assertEquals(0, client.ftSearch(index, "@category:{purple}").getTotalResults());
909922
assertEquals(1, client.ftSearch(index, "@category:{orange\\,purple}").getTotalResults());
923+
assertEquals(1, client.ftSearch(index, "@category:{orange,purple}",
924+
FTSearchParams.searchParams().dialect(5)).getTotalResults());
910925
assertEquals(4, client.ftSearch(index, "hello").getTotalResults());
911926

912927
assertEquals(new HashSet<>(Arrays.asList("red", "blue", "green", "yellow", "orange,purple")),

0 commit comments

Comments
 (0)