Skip to content

Commit 634ccee

Browse files
committed
Change ScriptScoreQuery to require query and script
`NewScriptScoreQuery` now requires both `Query` and `Script` to be passed. Also, we added some more documentation. See #1197
1 parent d41fa8c commit 634ccee

2 files changed

+18
-12
lines changed

search_queries_script_score.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,20 @@ type ScriptScoreQuery struct {
2222
}
2323

2424
// NewScriptScoreQuery creates and initializes a new script_score query.
25-
func NewScriptScoreQuery() *ScriptScoreQuery {
26-
return &ScriptScoreQuery{}
25+
func NewScriptScoreQuery(query Query, script *Script) *ScriptScoreQuery {
26+
return &ScriptScoreQuery{
27+
query: query,
28+
script: script,
29+
}
2730
}
2831

32+
// Query to be used in the ScriptScoreQuery.
2933
func (q *ScriptScoreQuery) Query(query Query) *ScriptScoreQuery {
3034
q.query = query
3135
return q
3236
}
3337

38+
// Script to calculate the score.
3439
func (q *ScriptScoreQuery) Script(script *Script) *ScriptScoreQuery {
3540
q.script = script
3641
return q

search_queries_script_score_test.go

+11-10
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ import (
1111
)
1212

1313
func TestScriptScoreQuery(t *testing.T) {
14-
q := NewScriptScoreQuery().
15-
Query(NewMatchQuery("message", "elasticsearch")).
16-
Script(NewScript("doc['likes'].value / 10")).
17-
MinScore(1.1).
18-
QueryName("my_query")
14+
q := NewScriptScoreQuery(
15+
NewMatchQuery("message", "elasticsearch"),
16+
NewScript("doc['likes'].value / 10"),
17+
).MinScore(1.1).Boost(5.0).QueryName("my_query")
1918
src, err := q.Source()
2019
if err != nil {
2120
t.Fatal(err)
@@ -25,7 +24,7 @@ func TestScriptScoreQuery(t *testing.T) {
2524
t.Fatalf("marshaling to JSON failed: %v", err)
2625
}
2726
got := string(data)
28-
expected := `{"script_score":{"_name":"my_query","min_score":1.1,"query":{"match":{"message":{"query":"elasticsearch"}}},"script":{"source":"doc['likes'].value / 10"}}}`
27+
expected := `{"script_score":{"_name":"my_query","boost":5,"min_score":1.1,"query":{"match":{"message":{"query":"elasticsearch"}}},"script":{"source":"doc['likes'].value / 10"}}}`
2928
if got != expected {
3029
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
3130
}
@@ -34,12 +33,14 @@ func TestScriptScoreQuery(t *testing.T) {
3433
func TestScriptScoreQueryIntegration(t *testing.T) {
3534
client := setupTestClientAndCreateIndexAndAddDocs(t) //, SetTraceLog(log.New(os.Stdout, "", 0)))
3635

37-
ssq := NewScriptScoreQuery().
38-
Query(NewMatchQuery("message", "Golang")).
39-
Script(NewScript("(1 + doc['retweets'].value) * 10"))
4036
res, err := client.Search().
4137
Index(testIndexName).
42-
Query(ssq).
38+
Query(
39+
NewScriptScoreQuery(
40+
NewMatchQuery("message", "Golang"),
41+
NewScript("(1 + doc['retweets'].value) * 10"),
42+
),
43+
).
4344
Pretty(true).
4445
Do(context.Background())
4546
if err != nil {

0 commit comments

Comments
 (0)