Skip to content

Commit f13456b

Browse files
DOC-5073 added examples for vector sets intro page (#3590)
1 parent 8ddc6fa commit f13456b

File tree

1 file changed

+210
-0
lines changed

1 file changed

+210
-0
lines changed

Diff for: doctests/dt_vec_set.py

+210
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
# EXAMPLE: vecset_tutorial
2+
# HIDE_START
3+
"""
4+
Code samples for Vector set doc pages:
5+
https://redis.io/docs/latest/develop/data-types/vector-sets/
6+
"""
7+
8+
import redis
9+
10+
r = redis.Redis(decode_responses=True)
11+
# HIDE_END
12+
13+
# REMOVE_START
14+
r.delete("points")
15+
# REMOVE_END
16+
17+
# STEP_START vadd
18+
res1 = r.vset().vadd("points", [1.0, 1.0], "pt:A")
19+
print(res1) # >>> 1
20+
21+
res2 = r.vset().vadd("points", [-1.0, -1.0], "pt:B")
22+
print(res2) # >>> 1
23+
24+
res3 = r.vset().vadd("points", [-1.0, 1.0], "pt:C")
25+
print(res3) # >>> 1
26+
27+
res4 = r.vset().vadd("points", [1.0, -1.0], "pt:D")
28+
print(res4) # >>> 1
29+
30+
res5 = r.vset().vadd("points", [1.0, 0], "pt:E")
31+
print(res5) # >>> 1
32+
33+
res6 = r.type("points")
34+
print(res6) # >>> vectorset
35+
# STEP_END
36+
# REMOVE_START
37+
assert res1 == 1
38+
assert res2 == 1
39+
assert res3 == 1
40+
assert res4 == 1
41+
assert res5 == 1
42+
43+
assert res6 == "vectorset"
44+
# REMOVE_END
45+
46+
# STEP_START vcardvdim
47+
res7 = r.vset().vcard("points")
48+
print(res7) # >>> 5
49+
50+
res8 = r.vset().vdim("points")
51+
print(res8) # >>> 2
52+
# STEP_END
53+
# REMOVE_START
54+
assert res7 == 5
55+
assert res8 == 2
56+
# REMOVE_END
57+
58+
# STEP_START vemb
59+
res9 = r.vset().vemb("points", "pt:A")
60+
print(res9) # >>> [0.9999999403953552, 0.9999999403953552]
61+
62+
res10 = r.vset().vemb("points", "pt:B")
63+
print(res10) # >>> [-0.9999999403953552, -0.9999999403953552]
64+
65+
res11 = r.vset().vemb("points", "pt:C")
66+
print(res11) # >>> [-0.9999999403953552, 0.9999999403953552]
67+
68+
res12 = r.vset().vemb("points", "pt:D")
69+
print(res12) # >>> [0.9999999403953552, -0.9999999403953552]
70+
71+
res13 = r.vset().vemb("points", "pt:E")
72+
print(res13) # >>> [1, 0]
73+
# STEP_END
74+
# REMOVE_START
75+
assert 1 - res9[0] < 0.001
76+
assert 1 - res9[1] < 0.001
77+
assert 1 + res10[0] < 0.001
78+
assert 1 + res10[1] < 0.001
79+
assert 1 + res11[0] < 0.001
80+
assert 1 - res11[1] < 0.001
81+
assert 1 - res12[0] < 0.001
82+
assert 1 + res12[1] < 0.001
83+
assert res13 == [1, 0]
84+
# REMOVE_END
85+
86+
# STEP_START attr
87+
res14 = r.vset().vsetattr("points", "pt:A", {
88+
"name": "Point A",
89+
"description": "First point added"
90+
})
91+
print(res14) # >>> 1
92+
93+
res15 = r.vset().vgetattr("points", "pt:A")
94+
print(res15)
95+
# >>> {'name': 'Point A', 'description': 'First point added'}
96+
97+
res16 = r.vset().vsetattr("points", "pt:A", "")
98+
print(res16) # >>> 1
99+
100+
res17 = r.vset().vgetattr("points", "pt:A")
101+
print(res17) # >>> None
102+
# STEP_END
103+
# REMOVE_START
104+
assert res14 == 1
105+
assert res15 == {"name": "Point A", "description": "First point added"}
106+
assert res16 == 1
107+
assert res17 is None
108+
# REMOVE_END
109+
110+
# STEP_START vrem
111+
res18 = r.vset().vadd("points", [0, 0], "pt:F")
112+
print(res18) # >>> 1
113+
114+
res19 = r.vset().vcard("points")
115+
print(res19) # >>> 6
116+
117+
res20 = r.vset().vrem("points", "pt:F")
118+
print(res20) # >>> 1
119+
120+
res21 = r.vset().vcard("points")
121+
print(res21) # >>> 5
122+
# STEP_END
123+
# REMOVE_START
124+
assert res18 == 1
125+
assert res19 == 6
126+
assert res20 == 1
127+
assert res21 == 5
128+
# REMOVE_END
129+
130+
# STEP_START vsim_basic
131+
res22 = r.vset().vsim("points", [0.9, 0.1])
132+
print(res22)
133+
# >>> ['pt:E', 'pt:A', 'pt:D', 'pt:C', 'pt:B']
134+
# STEP_END
135+
# REMOVE_START
136+
assert res22 == ["pt:E", "pt:A", "pt:D", "pt:C", "pt:B"]
137+
# REMOVE_END
138+
139+
# STEP_START vsim_options
140+
res23 = r.vset().vsim(
141+
"points", "pt:A",
142+
with_scores=True,
143+
count=4
144+
)
145+
print(res23)
146+
# >>> {'pt:A': 1.0, 'pt:E': 0.8535534143447876, 'pt:D': 0.5, 'pt:C': 0.5}
147+
# STEP_END
148+
# REMOVE_START
149+
assert res23["pt:A"] == 1.0
150+
assert res23["pt:C"] == 0.5
151+
assert res23["pt:D"] == 0.5
152+
assert res23["pt:E"] - 0.85 < 0.005
153+
# REMOVE_END
154+
155+
# STEP_START vsim_filter
156+
res24 = r.vset().vsetattr("points", "pt:A", {
157+
"size": "large",
158+
"price": 18.99
159+
})
160+
print(res24) # >>> 1
161+
162+
res25 = r.vset().vsetattr("points", "pt:B", {
163+
"size": "large",
164+
"price": 35.99
165+
})
166+
print(res25) # >>> 1
167+
168+
res26 = r.vset().vsetattr("points", "pt:C", {
169+
"size": "large",
170+
"price": 25.99
171+
})
172+
print(res26) # >>> 1
173+
174+
res27 = r.vset().vsetattr("points", "pt:D", {
175+
"size": "small",
176+
"price": 21.00
177+
})
178+
print(res27) # >>> 1
179+
180+
res28 = r.vset().vsetattr("points", "pt:E", {
181+
"size": "small",
182+
"price": 17.75
183+
})
184+
print(res28) # >>> 1
185+
186+
# Return elements in order of distance from point A whose
187+
# `size` attribute is `large`.
188+
res29 = r.vset().vsim(
189+
"points", "pt:A",
190+
filter='.size == "large"'
191+
)
192+
print(res29) # >>> ['pt:A', 'pt:C', 'pt:B']
193+
194+
# Return elements in order of distance from point A whose size is
195+
# `large` and whose price is greater than 20.00.
196+
res30 = r.vset().vsim(
197+
"points", "pt:A",
198+
filter='.size == "large" && .price > 20.00'
199+
)
200+
print(res30) # >>> ['pt:C', 'pt:B']
201+
# STEP_END
202+
# REMOVE_START
203+
assert res24 == 1
204+
assert res25 == 1
205+
assert res26 == 1
206+
assert res27 == 1
207+
assert res28 == 1
208+
209+
assert res30 == ['pt:C', 'pt:B']
210+
# REMOVE_END

0 commit comments

Comments
 (0)