diff --git a/related/inverted_index.go b/related/inverted_index.go index 1b1f69e3e..5502f9f11 100644 --- a/related/inverted_index.go +++ b/related/inverted_index.go @@ -23,6 +23,7 @@ import ( "time" "github.com/gohugoio/hugo/common/maps" + "github.com/spf13/cast" "github.com/gohugoio/hugo/common/types" "github.com/mitchellh/mapstructure" @@ -283,6 +284,8 @@ func (cfg IndexConfig) ToKeywords(v any) ([]Keyword, error) { vv = vc } keywords = append(keywords, StringsToKeywords(vv...)...) + case []any: + return cfg.ToKeywords(cast.ToStringSlice(vv)) case time.Time: layout := "2006" if cfg.Pattern != "" { diff --git a/related/inverted_index_test.go b/related/inverted_index_test.go index fdef06b13..7a3bd89c7 100644 --- a/related/inverted_index_test.go +++ b/related/inverted_index_test.go @@ -212,6 +212,19 @@ func TestToKeywordsToLower(t *testing.T) { }) } +func TestToKeywordsAnySlice(t *testing.T) { + c := qt.New(t) + var config IndexConfig + slice := []any{"A", 32, "C"} + keywords, err := config.ToKeywords(slice) + c.Assert(err, qt.IsNil) + c.Assert(keywords, qt.DeepEquals, []Keyword{ + StringKeyword("A"), + StringKeyword("32"), + StringKeyword("C"), + }) +} + func BenchmarkRelatedNewIndex(b *testing.B) { pages := make([]*testDoc, 100) numkeywords := 30