@@ -227,3 +227,107 @@ func ExampleClient_search_json() {
227227 // London - 1
228228 // Tel Aviv - 2
229229}
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+ "email" : "paul.john@example.com" ,
278+ "age" : 42 ,
279+ "city" : "London" ,
280+ }
281+
282+ user2 := map [string ]interface {}{
283+ "name" : "Eden Zamir" ,
284+ "email" : "eden.zamir@example.com" ,
285+ "age" : 29 ,
286+ "city" : "Tel Aviv" ,
287+ }
288+
289+ user3 := map [string ]interface {}{
290+ "name" : "Paul Zamir" ,
291+ "email" : "paul.zamir@example.com" ,
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:paul.zamir@example.com name:Paul Zamir]}]}
333+ }
0 commit comments