Skip to content

Commit

Permalink
added tests for facet builds and constant scorer
Browse files Browse the repository at this point in the history
  • Loading branch information
mschoch committed Nov 27, 2014
1 parent f677e11 commit 860a6c3
Show file tree
Hide file tree
Showing 2 changed files with 315 additions and 1 deletion.
198 changes: 197 additions & 1 deletion search/facets_builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"testing"
)

func TestFacetResultsMerge(t *testing.T) {
func TestTermFacetResultsMerge(t *testing.T) {

fr1 := &FacetResult{
Field: "type",
Expand Down Expand Up @@ -103,3 +103,199 @@ func TestFacetResultsMerge(t *testing.T) {
t.Errorf("expected %v, got %v", expectedFrs, frs1)
}
}

func TestNumericFacetResultsMerge(t *testing.T) {

lowmed := 3.0
medhi := 6.0
hihigher := 9.0

fr1 := &FacetResult{
Field: "rating",
Total: 100,
Missing: 25,
Other: 25,
NumericRanges: []*NumericRangeFacet{
&NumericRangeFacet{
Name: "low",
Max: &lowmed,
Count: 25,
},
&NumericRangeFacet{
Name: "med",
Count: 24,
Max: &lowmed,
Min: &medhi,
},
&NumericRangeFacet{
Name: "hi",
Count: 1,
Min: &medhi,
Max: &hihigher,
},
},
}
frs1 := FacetResults{
"ratings": fr1,
}

fr2 := &FacetResult{
Field: "rating",
Total: 100,
Missing: 25,
Other: 25,
NumericRanges: []*NumericRangeFacet{
&NumericRangeFacet{
Name: "low",
Max: &lowmed,
Count: 25,
},
&NumericRangeFacet{
Name: "med",
Max: &lowmed,
Min: &medhi,
Count: 22,
},
&NumericRangeFacet{
Name: "highest",
Min: &hihigher,
Count: 3,
},
},
}
frs2 := FacetResults{
"ratings": fr2,
}

expectedFr := &FacetResult{
Field: "rating",
Total: 200,
Missing: 50,
Other: 51,
NumericRanges: []*NumericRangeFacet{
&NumericRangeFacet{
Name: "low",
Count: 50,
Max: &lowmed,
},
&NumericRangeFacet{
Name: "med",
Max: &lowmed,
Min: &medhi,
Count: 46,
},
&NumericRangeFacet{
Name: "highest",
Min: &hihigher,
Count: 3,
},
},
}
expectedFrs := FacetResults{
"ratings": expectedFr,
}

frs1.Merge(frs2)
frs1.Fixup("ratings", 3)
if !reflect.DeepEqual(frs1, expectedFrs) {
t.Errorf("expected %#v, got %#v", expectedFrs, frs1)
}
}

func TestDateFacetResultsMerge(t *testing.T) {

lowmed := "2010-01-01"
medhi := "2011-01-01"
hihigher := "2012-01-01"

fr1 := &FacetResult{
Field: "birthday",
Total: 100,
Missing: 25,
Other: 25,
DateRanges: []*DateRangeFacet{
&DateRangeFacet{
Name: "low",
End: &lowmed,
Count: 25,
},
&DateRangeFacet{
Name: "med",
Count: 24,
Start: &lowmed,
End: &medhi,
},
&DateRangeFacet{
Name: "hi",
Count: 1,
Start: &medhi,
End: &hihigher,
},
},
}
frs1 := FacetResults{
"birthdays": fr1,
}

fr2 := &FacetResult{
Field: "birthday",
Total: 100,
Missing: 25,
Other: 25,
DateRanges: []*DateRangeFacet{
&DateRangeFacet{
Name: "low",
End: &lowmed,
Count: 25,
},
&DateRangeFacet{
Name: "med",
Start: &lowmed,
End: &medhi,
Count: 22,
},
&DateRangeFacet{
Name: "highest",
Start: &hihigher,
Count: 3,
},
},
}
frs2 := FacetResults{
"birthdays": fr2,
}

expectedFr := &FacetResult{
Field: "birthday",
Total: 200,
Missing: 50,
Other: 51,
DateRanges: []*DateRangeFacet{
&DateRangeFacet{
Name: "low",
Count: 50,
End: &lowmed,
},
&DateRangeFacet{
Name: "med",
Start: &lowmed,
End: &medhi,
Count: 46,
},
&DateRangeFacet{
Name: "highest",
Start: &hihigher,
Count: 3,
},
},
}
expectedFrs := FacetResults{
"birthdays": expectedFr,
}

frs1.Merge(frs2)
frs1.Fixup("birthdays", 3)
if !reflect.DeepEqual(frs1, expectedFrs) {
t.Errorf("expected %#v, got %#v", expectedFrs, frs1)
}
}
118 changes: 118 additions & 0 deletions search/scorers/scorer_constant_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
// Copyright (c) 2013 Couchbase, Inc.
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
// except in compliance with the License. You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software distributed under the
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
// either express or implied. See the License for the specific language governing permissions
// and limitations under the License.

package scorers

import (
"reflect"
"testing"

"github.com/blevesearch/bleve/index"
"github.com/blevesearch/bleve/search"
)

func TestConstantScorer(t *testing.T) {

scorer := NewConstantScorer(1, 1, true)

tests := []struct {
termMatch *index.TermFieldDoc
result *search.DocumentMatch
}{
// test some simple math
{
termMatch: &index.TermFieldDoc{
ID: "one",
Freq: 1,
Norm: 1.0,
Vectors: []*index.TermFieldVector{
&index.TermFieldVector{
Field: "desc",
Pos: 1,
Start: 0,
End: 4,
},
},
},
result: &search.DocumentMatch{
ID: "one",
Score: 1.0,
Expl: &search.Explanation{
Value: 1.0,
Message: "ConstantScore()",
},
},
},
}

for _, test := range tests {
actual := scorer.Score(test.termMatch.ID)

if !reflect.DeepEqual(actual, test.result) {
t.Errorf("expected %#v got %#v for %#v", test.result, actual, test.termMatch)
}
}

}

func TestConstantScorerWithQueryNorm(t *testing.T) {

scorer := NewConstantScorer(1, 1, true)
scorer.SetQueryNorm(2.0)

tests := []struct {
termMatch *index.TermFieldDoc
result *search.DocumentMatch
}{
{
termMatch: &index.TermFieldDoc{
ID: "one",
Freq: 1,
Norm: 1.0,
},
result: &search.DocumentMatch{
ID: "one",
Score: 2.0,
Expl: &search.Explanation{
Value: 2.0,
Message: "weight(^1.000000), product of:",
Children: []*search.Explanation{
&search.Explanation{
Value: 2.0,
Message: "ConstantScore()^1.000000, product of:",
Children: []*search.Explanation{
&search.Explanation{
Value: 1,
Message: "boost",
},
&search.Explanation{
Value: 2,
Message: "queryNorm",
},
},
},
&search.Explanation{
Value: 1.0,
Message: "ConstantScore()",
},
},
},
},
},
}

for _, test := range tests {
actual := scorer.Score(test.termMatch.ID)

if !reflect.DeepEqual(actual, test.result) {
t.Errorf("expected %#v got %#v for %#v", test.result, actual, test.termMatch)
}
}

}

0 comments on commit 860a6c3

Please sign in to comment.