@@ -227,3 +227,107 @@ func ExampleClient_search_json() {
227
227
// London - 1
228
228
// Tel Aviv - 2
229
229
}
230
+
231
+ func ExampleClient_search_hash () {
232
+ ctx := context .Background ()
233
+
234
+ rdb := redis .NewClient (& redis.Options {
235
+ Addr : "localhost:6379" ,
236
+ Password : "" , // no password docs
237
+ DB : 0 , // use default DB
238
+ Protocol : 2 ,
239
+ })
240
+
241
+ // REMOVE_START
242
+ rdb .Del (ctx , "huser:1" , "huser:2" , "huser:3" )
243
+ rdb .FTDropIndex (ctx , "hash-idx:users" )
244
+ // REMOVE_END
245
+
246
+ // STEP_START make_hash_index
247
+ _ , err := rdb .FTCreate (
248
+ ctx ,
249
+ "hash-idx:users" ,
250
+ // Options:
251
+ & redis.FTCreateOptions {
252
+ OnHash : true ,
253
+ Prefix : []interface {}{"huser:" },
254
+ },
255
+ // Index schema fields:
256
+ & redis.FieldSchema {
257
+ FieldName : "name" ,
258
+ FieldType : redis .SearchFieldTypeText ,
259
+ },
260
+ & redis.FieldSchema {
261
+ FieldName : "city" ,
262
+ FieldType : redis .SearchFieldTypeTag ,
263
+ },
264
+ & redis.FieldSchema {
265
+ FieldName : "age" ,
266
+ FieldType : redis .SearchFieldTypeNumeric ,
267
+ },
268
+ ).Result ()
269
+
270
+ if err != nil {
271
+ panic (err )
272
+ }
273
+ // STEP_END
274
+
275
+ user1 := map [string ]interface {}{
276
+ "name" : "Paul John" ,
277
+
278
+ "age" : 42 ,
279
+ "city" : "London" ,
280
+ }
281
+
282
+ user2 := map [string ]interface {}{
283
+ "name" : "Eden Zamir" ,
284
+
285
+ "age" : 29 ,
286
+ "city" : "Tel Aviv" ,
287
+ }
288
+
289
+ user3 := map [string ]interface {}{
290
+ "name" : "Paul Zamir" ,
291
+
292
+ "age" : 35 ,
293
+ "city" : "Tel Aviv" ,
294
+ }
295
+
296
+ // STEP_START add_hash_data
297
+ _ , err = rdb .HSet (ctx , "huser:1" , user1 ).Result ()
298
+
299
+ if err != nil {
300
+ panic (err )
301
+ }
302
+
303
+ _ , err = rdb .HSet (ctx , "huser:2" , user2 ).Result ()
304
+
305
+ if err != nil {
306
+ panic (err )
307
+ }
308
+
309
+ _ , err = rdb .HSet (ctx , "huser:3" , user3 ).Result ()
310
+
311
+ if err != nil {
312
+ panic (err )
313
+ }
314
+ // STEP_END
315
+
316
+ // STEP_START query1_hash
317
+ findPaulHashResult , err := rdb .FTSearch (
318
+ ctx ,
319
+ "hash-idx:users" ,
320
+ "Paul @age:[30 40]" ,
321
+ ).Result ()
322
+
323
+ if err != nil {
324
+ panic (err )
325
+ }
326
+
327
+ fmt .Println (findPaulHashResult )
328
+ // >>> {1 [{huser:3 <nil> <nil> <nil> map[age:35 city:Tel Aviv...
329
+ // STEP_END
330
+
331
+ // Output:
332
+ // {1 [{huser:3 <nil> <nil> <nil> map[age:35 city:Tel Aviv email:[email protected] name:Paul Zamir]}]}
333
+ }
0 commit comments