diff --git a/search/facets_builder.go b/search/facets_builder.go index 4b1f2db78..930d04c6c 100644 --- a/search/facets_builder.go +++ b/search/facets_builder.go @@ -133,6 +133,17 @@ func (tf *TermFacets) Terms() []*TermFacet { return tf.termFacets } +func (tf *TermFacets) AvailableTerms() []*TermFacet { + if tf == nil { + return []*TermFacet{} + } + terms := make([]*TermFacet, 0, len(tf.termLookup)) + for _, term := range tf.termLookup { + terms = append(terms, term) + } + return terms +} + func (tf *TermFacets) TrimToTopN(n int) { tf.termFacets = tf.termFacets[:n] } diff --git a/search/facets_builder_test.go b/search/facets_builder_test.go index 6815b1ab9..d6833fe3f 100644 --- a/search/facets_builder_test.go +++ b/search/facets_builder_test.go @@ -422,3 +422,28 @@ func TestDateFacetResultsMerge(t *testing.T) { t.Errorf("expected %#v, got %#v", expectedFrs, frs1) } } + +func TestAvailableTerms(t *testing.T) { + tfs := &TermFacets{} + tfs.Add( + &TermFacet{ + Term: "term", + Count: 10, + }, + ) + tfs.Add( + &TermFacet{ + Term: "term", + Count: 20, + }, + ) + + terms := tfs.AvailableTerms() + if len(terms) != 1 { + t.Errorf("expected 1 terms, got %d", len(terms)) + } + + if terms[0].Count != 30 { + t.Errorf("expected 60, got %d", terms[0].Count) + } +}