Skip to content

Commit b4cac87

Browse files
authored
Support FT.ADDHASH command (#62)
* Support FT.ADDHASH command
1 parent 76b1c66 commit b4cac87

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func ExampleClient() {
7878
| :--- | ----: |
7979
| [FT.CREATE](https://oss.redislabs.com/redisearch/Commands.html#ftcreate) | [CreateIndex](https://godoc.org/github.com/RediSearch/redisearch-go/redisearch#Client.CreateIndex) |
8080
| [FT.ADD](https://oss.redislabs.com/redisearch/Commands.html#ftadd) | [IndexOptions](https://godoc.org/github.com/RediSearch/redisearch-go/redisearch#Client.IndexOptions) |
81-
| [FT.ADDHASH](https://oss.redislabs.com/redisearch/Commands.html#ftaddhash) | N/A |
81+
| [FT.ADDHASH](https://oss.redislabs.com/redisearch/Commands.html#ftaddhash) | [AddHash](https://godoc.org/github.com/RediSearch/redisearch-go/redisearch#Client.AddHash) |
8282
| [FT.ALTER](https://oss.redislabs.com/redisearch/Commands.html#ftalter) | N/A |
8383
| [FT.ALIASADD](https://oss.redislabs.com/redisearch/Commands.html#ftaliasadd) | [AliasAdd](https://godoc.org/github.com/RediSearch/redisearch-go/redisearch#Client.AliasAdd) |
8484
| [FT.ALIASUPDATE](https://oss.redislabs.com/redisearch/Commands.html#ftaliasupdate) | [AliasUpdate](https://godoc.org/github.com/RediSearch/redisearch-go/redisearch#Client.AliasUpdate) |

redisearch/client.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,3 +585,19 @@ func (i *Client) SynDump(indexName string) (map[string][]int64, error) {
585585
}
586586
return m, nil
587587
}
588+
589+
// Adds a document to the index from an existing HASH key in Redis.
590+
func (i *Client) AddHash(docId string, score float32, language string, replace bool) (string, error) {
591+
conn := i.pool.Get()
592+
defer conn.Close()
593+
594+
args := redis.Args{i.name, docId, score}
595+
if language != "" {
596+
args = args.Add("LANGUAGE", language)
597+
}
598+
599+
if replace {
600+
args = args.Add("REPLACE")
601+
}
602+
return redis.String(conn.Do("FT.ADDHASH", args...))
603+
}

redisearch/client_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,3 +512,21 @@ func TestClient_SynDump(t *testing.T) {
512512
assert.Equal(t, gid, m["baby"][0])
513513
assert.Equal(t, gid2, m["child"][0])
514514
}
515+
516+
func TestClient_AddHash(t *testing.T) {
517+
c := createClient("testAddHash")
518+
519+
sc := NewSchema(DefaultOptions).
520+
AddField(NewTextField("name")).
521+
AddField(NewTextField("addr"))
522+
c.Drop()
523+
err := c.CreateIndex(sc)
524+
assert.Nil(t, err)
525+
526+
// Add a hash key
527+
c.pool.Get().Do("HMSET", "myhash", "field1", "Hello")
528+
529+
ret, err := c.AddHash("myhash", 1, "english", false)
530+
assert.Nil(t, err)
531+
assert.Equal(t, "OK", ret)
532+
}

0 commit comments

Comments
 (0)