summaryrefslogtreecommitdiffstats
path: root/vendor/gopkg.in/olivere/elastic.v5/rescorer.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gopkg.in/olivere/elastic.v5/rescorer.go')
-rw-r--r--vendor/gopkg.in/olivere/elastic.v5/rescorer.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/vendor/gopkg.in/olivere/elastic.v5/rescorer.go b/vendor/gopkg.in/olivere/elastic.v5/rescorer.go
new file mode 100644
index 000000000..ccd4bb854
--- /dev/null
+++ b/vendor/gopkg.in/olivere/elastic.v5/rescorer.go
@@ -0,0 +1,64 @@
+// Copyright 2012-present Oliver Eilhard. All rights reserved.
+// Use of this source code is governed by a MIT-license.
+// See http://olivere.mit-license.org/license.txt for details.
+
+package elastic
+
+type Rescorer interface {
+ Name() string
+ Source() (interface{}, error)
+}
+
+// -- Query Rescorer --
+
+type QueryRescorer struct {
+ query Query
+ rescoreQueryWeight *float64
+ queryWeight *float64
+ scoreMode string
+}
+
+func NewQueryRescorer(query Query) *QueryRescorer {
+ return &QueryRescorer{
+ query: query,
+ }
+}
+
+func (r *QueryRescorer) Name() string {
+ return "query"
+}
+
+func (r *QueryRescorer) RescoreQueryWeight(rescoreQueryWeight float64) *QueryRescorer {
+ r.rescoreQueryWeight = &rescoreQueryWeight
+ return r
+}
+
+func (r *QueryRescorer) QueryWeight(queryWeight float64) *QueryRescorer {
+ r.queryWeight = &queryWeight
+ return r
+}
+
+func (r *QueryRescorer) ScoreMode(scoreMode string) *QueryRescorer {
+ r.scoreMode = scoreMode
+ return r
+}
+
+func (r *QueryRescorer) Source() (interface{}, error) {
+ rescoreQuery, err := r.query.Source()
+ if err != nil {
+ return nil, err
+ }
+
+ source := make(map[string]interface{})
+ source["rescore_query"] = rescoreQuery
+ if r.queryWeight != nil {
+ source["query_weight"] = *r.queryWeight
+ }
+ if r.rescoreQueryWeight != nil {
+ source["rescore_query_weight"] = *r.rescoreQueryWeight
+ }
+ if r.scoreMode != "" {
+ source["score_mode"] = r.scoreMode
+ }
+ return source, nil
+}