Skip to content

Commit a98b643

Browse files
committed
Merge remote-tracking branch 'upstream/master' into load-balance-search-commands-to-shards
2 parents 5e492e3 + 9c425cb commit a98b643

File tree

5 files changed

+577
-6
lines changed

5 files changed

+577
-6
lines changed

search_commands.go

Lines changed: 51 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,14 @@ type FTAttribute struct {
511511
PhoneticMatcher string
512512
CaseSensitive bool
513513
WithSuffixtrie bool
514+
515+
// Vector specific attributes
516+
Algorithm string
517+
DataType string
518+
Dim int
519+
DistanceMetric string
520+
M int
521+
EFConstruction int
514522
}
515523

516524
type CursorStats struct {
@@ -1410,21 +1418,26 @@ func parseFTInfo(data map[string]interface{}) (FTInfoResult, error) {
14101418
for _, attr := range attributes {
14111419
if attrMap, ok := attr.([]interface{}); ok {
14121420
att := FTAttribute{}
1413-
for i := 0; i < len(attrMap); i++ {
1414-
if internal.ToLower(internal.ToString(attrMap[i])) == "attribute" {
1421+
attrLen := len(attrMap)
1422+
for i := 0; i < attrLen; i++ {
1423+
if internal.ToLower(internal.ToString(attrMap[i])) == "attribute" && i+1 < attrLen {
14151424
att.Attribute = internal.ToString(attrMap[i+1])
1425+
i++
14161426
continue
14171427
}
1418-
if internal.ToLower(internal.ToString(attrMap[i])) == "identifier" {
1428+
if internal.ToLower(internal.ToString(attrMap[i])) == "identifier" && i+1 < attrLen {
14191429
att.Identifier = internal.ToString(attrMap[i+1])
1430+
i++
14201431
continue
14211432
}
1422-
if internal.ToLower(internal.ToString(attrMap[i])) == "type" {
1433+
if internal.ToLower(internal.ToString(attrMap[i])) == "type" && i+1 < attrLen {
14231434
att.Type = internal.ToString(attrMap[i+1])
1435+
i++
14241436
continue
14251437
}
1426-
if internal.ToLower(internal.ToString(attrMap[i])) == "weight" {
1438+
if internal.ToLower(internal.ToString(attrMap[i])) == "weight" && i+1 < attrLen {
14271439
att.Weight = internal.ToFloat(attrMap[i+1])
1440+
i++
14281441
continue
14291442
}
14301443
if internal.ToLower(internal.ToString(attrMap[i])) == "nostem" {
@@ -1443,7 +1456,7 @@ func parseFTInfo(data map[string]interface{}) (FTInfoResult, error) {
14431456
att.UNF = true
14441457
continue
14451458
}
1446-
if internal.ToLower(internal.ToString(attrMap[i])) == "phonetic" {
1459+
if internal.ToLower(internal.ToString(attrMap[i])) == "phonetic" && i+1 < attrLen {
14471460
att.PhoneticMatcher = internal.ToString(attrMap[i+1])
14481461
continue
14491462
}
@@ -1456,6 +1469,38 @@ func parseFTInfo(data map[string]interface{}) (FTInfoResult, error) {
14561469
continue
14571470
}
14581471

1472+
// vector specific attributes
1473+
if internal.ToLower(internal.ToString(attrMap[i])) == "algorithm" && i+1 < attrLen {
1474+
att.Algorithm = internal.ToString(attrMap[i+1])
1475+
i++
1476+
continue
1477+
}
1478+
if internal.ToLower(internal.ToString(attrMap[i])) == "data_type" && i+1 < attrLen {
1479+
att.DataType = internal.ToString(attrMap[i+1])
1480+
i++
1481+
continue
1482+
}
1483+
if internal.ToLower(internal.ToString(attrMap[i])) == "dim" && i+1 < attrLen {
1484+
att.Dim = internal.ToInteger(attrMap[i+1])
1485+
i++
1486+
continue
1487+
}
1488+
if internal.ToLower(internal.ToString(attrMap[i])) == "distance_metric" && i+1 < attrLen {
1489+
att.DistanceMetric = internal.ToString(attrMap[i+1])
1490+
i++
1491+
continue
1492+
}
1493+
if internal.ToLower(internal.ToString(attrMap[i])) == "m" && i+1 < attrLen {
1494+
att.M = internal.ToInteger(attrMap[i+1])
1495+
i++
1496+
continue
1497+
}
1498+
if internal.ToLower(internal.ToString(attrMap[i])) == "ef_construction" && i+1 < attrLen {
1499+
att.EFConstruction = internal.ToInteger(attrMap[i+1])
1500+
i++
1501+
continue
1502+
}
1503+
14591504
}
14601505
ftInfo.Attributes = append(ftInfo.Attributes, att)
14611506
}

0 commit comments

Comments
 (0)