Skip to content

Commit d599c5e

Browse files
DOC-5076 vector set doc examples (#4281)
* DOC-5076 vector set doc examples * Use latest redis for doctests * clean up --------- Co-authored-by: ggivo <[email protected]>
1 parent e3e9b34 commit d599c5e

File tree

1 file changed

+258
-0
lines changed

1 file changed

+258
-0
lines changed
Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
// EXAMPLE: vecset_tutorial
2+
// REMOVE_START
3+
package io.redis.examples;
4+
5+
import org.junit.jupiter.api.Test;
6+
import static org.junit.jupiter.api.Assertions.*;
7+
// REMOVE_END
8+
import redis.clients.jedis.UnifiedJedis;
9+
import redis.clients.jedis.params.VAddParams;
10+
import redis.clients.jedis.params.VSimParams;
11+
12+
import java.util.*;
13+
14+
public class VectorSetExample {
15+
16+
@Test
17+
public void run() {
18+
try (UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379")) {
19+
// REMOVE_START
20+
jedis.del("points", "quantSetQ8", "quantSetNoQ", "quantSetBin", "setNotReduced",
21+
"setReduced");
22+
// REMOVE_END
23+
24+
// STEP_START vadd
25+
boolean res1 = jedis.vadd("points", new float[] { 1.0f, 1.0f }, "pt:A");
26+
System.out.println(res1); // >>> true
27+
28+
boolean res2 = jedis.vadd("points", new float[] { -1.0f, -1.0f }, "pt:B");
29+
System.out.println(res2); // >>> true
30+
31+
boolean res3 = jedis.vadd("points", new float[] { -1.0f, 1.0f }, "pt:C");
32+
System.out.println(res3); // >>> true
33+
34+
boolean res4 = jedis.vadd("points", new float[] { 1.0f, -1.0f }, "pt:D");
35+
System.out.println(res4); // >>> true
36+
37+
boolean res5 = jedis.vadd("points", new float[] { 1.0f, 0.0f }, "pt:E");
38+
System.out.println(res5); // >>> true
39+
40+
String res6 = jedis.type("points");
41+
System.out.println(res6); // >>> vectorset
42+
// STEP_END
43+
// REMOVE_START
44+
assertTrue(res1);
45+
assertTrue(res2);
46+
assertTrue(res3);
47+
assertTrue(res4);
48+
assertTrue(res5);
49+
assertEquals("vectorset", res6);
50+
// REMOVE_END
51+
52+
// STEP_START vcardvdim
53+
long res7 = jedis.vcard("points");
54+
System.out.println(res7); // >>> 5
55+
56+
long res8 = jedis.vdim("points");
57+
System.out.println(res8); // >>> 2
58+
// STEP_END
59+
// REMOVE_START
60+
assertEquals(5L, res7);
61+
assertEquals(2L, res8);
62+
// REMOVE_END
63+
64+
// STEP_START vemb
65+
List<Double> res9 = jedis.vemb("points", "pt:A");
66+
System.out.println(res9); // >>> [0.9999999..., 0.9999999...]
67+
68+
List<Double> res10 = jedis.vemb("points", "pt:B");
69+
System.out.println(res10); // >>> [-0.9999999..., -0.9999999...]
70+
71+
List<Double> res11 = jedis.vemb("points", "pt:C");
72+
System.out.println(res11); // >>> [-0.9999999..., 0.9999999...]
73+
74+
List<Double> res12 = jedis.vemb("points", "pt:D");
75+
System.out.println(res12); // >>> [0.9999999..., -0.9999999...]
76+
77+
List<Double> res13 = jedis.vemb("points", "pt:E");
78+
System.out.println(res13); // >>> [1, 0]
79+
// STEP_END
80+
// REMOVE_START
81+
assertEquals(1, res9.get(0), 0.01);
82+
assertEquals(1, res9.get(1), 0.01);
83+
assertEquals(-1, res10.get(0), 0.01);
84+
assertEquals(-1, res10.get(1), 0.01);
85+
assertEquals(-1, res11.get(0), 0.01);
86+
assertEquals(1, res11.get(1), 0.01);
87+
assertEquals(1, res12.get(0), 0.01);
88+
assertEquals(-1, res12.get(1), 0.01);
89+
assertEquals(Arrays.asList(1.0, 0.0), res13);
90+
// REMOVE_END
91+
92+
// STEP_START attr
93+
boolean res14 = jedis.vsetattr("points", "pt:A",
94+
"{\"name\":\"Point A\",\"description\":\"First point added\"}");
95+
System.out.println(res14); // >>> true
96+
97+
String res15 = jedis.vgetattr("points", "pt:A");
98+
System.out.println(res15);
99+
// >>> {"name":"Point A","description":"First point added"}
100+
101+
boolean res16 = jedis.vsetattr("points", "pt:A", "");
102+
System.out.println(res16); // >>> true
103+
104+
String res17 = jedis.vgetattr("points", "pt:A");
105+
System.out.println(res17); // >>> null
106+
// STEP_END
107+
// REMOVE_START
108+
assertTrue(res14);
109+
assertTrue(res15.contains("\"name\":\"Point A\""));
110+
assertTrue(res15.contains("\"description\":\"First point added\""));
111+
assertTrue(res16);
112+
assertNull(res17);
113+
// REMOVE_END
114+
115+
// STEP_START vrem
116+
boolean res18 = jedis.vadd("points", new float[] { 0.0f, 0.0f }, "pt:F");
117+
System.out.println(res18); // >>> true
118+
119+
long res19 = jedis.vcard("points");
120+
System.out.println(res19); // >>> 6
121+
122+
boolean res20 = jedis.vrem("points", "pt:F");
123+
System.out.println(res20); // >>> true
124+
125+
long res21 = jedis.vcard("points");
126+
System.out.println(res21); // >>> 5
127+
// STEP_END
128+
// REMOVE_START
129+
assertTrue(res18);
130+
assertEquals(6L, res19);
131+
assertTrue(res20);
132+
assertEquals(5L, res21);
133+
// REMOVE_END
134+
135+
// STEP_START vsim_basic
136+
List<String> res22 = jedis.vsim("points", new float[] { 0.9f, 0.1f });
137+
System.out.println(res22);
138+
// >>> ["pt:E", "pt:A", "pt:D", "pt:C", "pt:B"]
139+
// STEP_END
140+
// REMOVE_START
141+
assertEquals(Arrays.asList("pt:E", "pt:A", "pt:D", "pt:C", "pt:B"), res22);
142+
// REMOVE_END
143+
144+
// STEP_START vsim_options
145+
Map<String, Double> res23 = jedis.vsimByElementWithScores("points", "pt:A",
146+
new VSimParams().count(4));
147+
System.out.println(res23);
148+
// >>> {pt:A=1.0, pt:E≈0.85355, pt:D=0.5, pt:C=0.5}
149+
// STEP_END
150+
// REMOVE_START
151+
assertEquals(1.0, res23.get("pt:A"), 0.0001);
152+
assertEquals(0.5, res23.get("pt:C"), 0.0001);
153+
assertEquals(0.5, res23.get("pt:D"), 0.0001);
154+
assertTrue(Math.abs(res23.get("pt:E") - 0.8535) < 0.01);
155+
// REMOVE_END
156+
157+
// STEP_START vsim_filter
158+
boolean res24 = jedis.vsetattr("points", "pt:A", "{\"size\":\"large\",\"price\":18.99}");
159+
System.out.println(res24); // >>> true
160+
161+
boolean res25 = jedis.vsetattr("points", "pt:B", "{\"size\":\"large\",\"price\":35.99}");
162+
System.out.println(res25); // >>> true
163+
164+
boolean res26 = jedis.vsetattr("points", "pt:C", "{\"size\":\"large\",\"price\":25.99}");
165+
System.out.println(res26); // >>> true
166+
167+
boolean res27 = jedis.vsetattr("points", "pt:D", "{\"size\":\"small\",\"price\":21.00}");
168+
System.out.println(res27); // >>> true
169+
170+
boolean res28 = jedis.vsetattr("points", "pt:E", "{\"size\":\"small\",\"price\":17.75}");
171+
System.out.println(res28); // >>> true
172+
173+
List<String> res29 = jedis.vsimByElement("points", "pt:A",
174+
new VSimParams().filter(".size == \"large\""));
175+
System.out.println(res29); // >>> ["pt:A", "pt:C", "pt:B"]
176+
177+
List<String> res30 = jedis.vsimByElement("points", "pt:A",
178+
new VSimParams().filter(".size == \"large\" && .price > 20.00"));
179+
System.out.println(res30); // >>> ["pt:C", "pt:B"]
180+
// STEP_END
181+
// REMOVE_START
182+
assertTrue(res24);
183+
assertTrue(res25);
184+
assertTrue(res26);
185+
assertTrue(res27);
186+
assertTrue(res28);
187+
assertEquals(Arrays.asList("pt:C", "pt:B"), res30);
188+
// REMOVE_END
189+
190+
// STEP_START add_quant
191+
boolean res31 = jedis.vadd("quantSetQ8", new float[] { 1.262185f, 1.958231f }, "quantElement",
192+
new VAddParams().q8());
193+
System.out.println(res31); // >>> true
194+
195+
List<Double> res32 = jedis.vemb("quantSetQ8", "quantElement");
196+
System.out.println("Q8: " + res32);
197+
// >>> Q8: [~1.264, ~1.958]
198+
199+
boolean res33 = jedis.vadd("quantSetNoQ", new float[] { 1.262185f, 1.958231f },
200+
"quantElement", new VAddParams().noQuant());
201+
System.out.println(res33); // >>> true
202+
203+
List<Double> res34 = jedis.vemb("quantSetNoQ", "quantElement");
204+
System.out.println("NOQUANT: " + res34);
205+
// >>> NOQUANT: [~1.262185, ~1.958231]
206+
207+
boolean res35 = jedis.vadd("quantSetBin", new float[] { 1.262185f, 1.958231f },
208+
"quantElement", new VAddParams().bin());
209+
System.out.println(res35); // >>> true
210+
211+
List<Double> res36 = jedis.vemb("quantSetBin", "quantElement");
212+
System.out.println("BIN: " + res36);
213+
// >>> BIN: [1, 1]
214+
// STEP_END
215+
// REMOVE_START
216+
assertTrue(res31);
217+
assertTrue(res33);
218+
assertTrue(res35);
219+
assertEquals(2, res32.size());
220+
assertEquals(2, res34.size());
221+
assertEquals(2, res36.size());
222+
assertTrue(Math.abs(res32.get(0) - 1.26) < 0.05);
223+
assertTrue(Math.abs(res32.get(1) - 1.958) < 0.01);
224+
assertTrue(Math.abs(res34.get(0) - 1.2622) < 0.01);
225+
assertTrue(Math.abs(res34.get(1) - 1.9582) < 0.01);
226+
assertEquals(Arrays.asList(1.0, 1.0), res36);
227+
// REMOVE_END
228+
229+
// STEP_START add_reduce
230+
float[] values = new float[300];
231+
for (int i = 0; i < 300; i++)
232+
values[i] = i / 299.0f;
233+
234+
boolean res37 = jedis.vadd("setNotReduced", values, "element");
235+
System.out.println(res37); // >>> true
236+
237+
long res38 = jedis.vdim("setNotReduced");
238+
System.out.println(res38); // >>> 300
239+
240+
boolean res39 = jedis.vadd("setReduced", values, "element", 100, new VAddParams());
241+
System.out.println(res39); // >>> true
242+
243+
long res40 = jedis.vdim("setReduced");
244+
System.out.println(res40); // >>> 100
245+
// STEP_END
246+
// REMOVE_START
247+
assertTrue(res37);
248+
assertEquals(300L, res38);
249+
assertTrue(res39);
250+
assertEquals(100L, res40);
251+
// REMOVE_END
252+
253+
// HIDE_START
254+
jedis.close();
255+
}
256+
}
257+
}
258+
// HIDE_END

0 commit comments

Comments
 (0)