summaryrefslogtreecommitdiffstats
path: root/vendor/gopkg.in/olivere/elastic.v5/suggester_context_category.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gopkg.in/olivere/elastic.v5/suggester_context_category.go')
-rw-r--r--vendor/gopkg.in/olivere/elastic.v5/suggester_context_category.go36
1 files changed, 28 insertions, 8 deletions
diff --git a/vendor/gopkg.in/olivere/elastic.v5/suggester_context_category.go b/vendor/gopkg.in/olivere/elastic.v5/suggester_context_category.go
index c224ae04a..2d63fe8fb 100644
--- a/vendor/gopkg.in/olivere/elastic.v5/suggester_context_category.go
+++ b/vendor/gopkg.in/olivere/elastic.v5/suggester_context_category.go
@@ -62,23 +62,36 @@ func (q *SuggesterCategoryMapping) Source() (interface{}, error) {
// See https://www.elastic.co/guide/en/elasticsearch/reference/5.2/suggester-context.html#_category_query.
type SuggesterCategoryQuery struct {
name string
- values []string
+ values map[string]*int
}
// NewSuggesterCategoryQuery creates a new SuggesterCategoryQuery.
func NewSuggesterCategoryQuery(name string, values ...string) *SuggesterCategoryQuery {
q := &SuggesterCategoryQuery{
name: name,
- values: make([]string, 0),
+ values: make(map[string]*int),
}
+
if len(values) > 0 {
- q.values = append(q.values, values...)
+ q.Values(values...)
}
return q
}
+func (q *SuggesterCategoryQuery) Value(val string) *SuggesterCategoryQuery {
+ q.values[val] = nil
+ return q
+}
+
+func (q *SuggesterCategoryQuery) ValueWithBoost(val string, boost int) *SuggesterCategoryQuery {
+ q.values[val] = &boost
+ return q
+}
+
func (q *SuggesterCategoryQuery) Values(values ...string) *SuggesterCategoryQuery {
- q.values = append(q.values, values...)
+ for _, val := range values {
+ q.values[val] = nil
+ }
return q
}
@@ -88,11 +101,18 @@ func (q *SuggesterCategoryQuery) Source() (interface{}, error) {
switch len(q.values) {
case 0:
- source[q.name] = q.values
- case 1:
- source[q.name] = q.values[0]
+ source[q.name] = make([]string, 0)
default:
- source[q.name] = q.values
+ contexts := make([]interface{}, 0)
+ for val, boost := range q.values {
+ context := make(map[string]interface{})
+ context["context"] = val
+ if boost != nil {
+ context["boost"] = *boost
+ }
+ contexts = append(contexts, context)
+ }
+ source[q.name] = contexts
}
return source, nil