Skip to content

Commit

Permalink
add FieldData
Browse files Browse the repository at this point in the history
  • Loading branch information
kamaev committed Apr 11, 2019
1 parent 92080f8 commit 654b4ea
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 47 deletions.
14 changes: 7 additions & 7 deletions index/bleve/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ func buildQueryForTags(filterTags []string) (searchQueries []query.Query) {

func buildQueryForTerms(searchTerms []string) (searchQueries []query.Query) {
for _, term := range searchTerms {
qr := bleve.NewFuzzyQuery(term)
qr.SetField(mapping.TriggerName.String())
qr.SetBoost(3)
qr1 := bleve.NewFuzzyQuery(term)
qr1.SetField(mapping.TriggerDesc.String())
qr1.SetBoost(1)
searchQueries = append(searchQueries, bleve.NewDisjunctionQuery(qr, qr1))
nameQuery, nameField := bleve.NewFuzzyQuery(term), mapping.TriggerName
nameQuery.SetField(nameField.String())
nameQuery.SetBoost(nameField.GetPriority())
descQuery, descField := bleve.NewFuzzyQuery(term), mapping.TriggerDesc
descQuery.SetField(descField.String())
descQuery.SetBoost(descField.GetPriority())
searchQueries = append(searchQueries, bleve.NewDisjunctionQuery(nameQuery, descQuery))
}
return
}
Expand Down
2 changes: 1 addition & 1 deletion index/bleve/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func (index *TriggerIndex) Search(filterTags []string, searchString string, only
return
}

func getHighlights(fragmentsMap search.FieldFragmentMap, triggerFields ...mapping.TriggerField) []moira.SearchHighlight {
func getHighlights(fragmentsMap search.FieldFragmentMap, triggerFields ...mapping.FieldData) []moira.SearchHighlight {
highlights := make([]moira.SearchHighlight, 0)
for _, triggerField := range triggerFields {
var highlightValue string
Expand Down
58 changes: 27 additions & 31 deletions index/mapping/trigger.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,24 @@ import (
"github.com/moira-alert/moira"
)

// TriggerField is used as enum
type TriggerField int

// Constants used as enum
const (
TriggerID TriggerField = iota
TriggerName
TriggerDesc
TriggerTags
TriggerLastCheckScore
)
// FieldData is container for field-related parameters
type FieldData struct {
Name string
NameTag string
Priority float64
}

var (
triggerFieldNames = []string{
"ID",
"Name",
"Desc",
"Tags",
"LastCheckScore",
}
triggerFieldTagValues = []string{
"id",
"name",
"desc",
"tags",
"",
}
// TriggerID represents field data for moira.Trigger.ID
TriggerID = FieldData{"ID", "id", 5}
// TriggerName represents field data for moira.Trigger.Name
TriggerName = FieldData{"Name", "name", 3}
// TriggerDesc represents field data for moira.Trigger.Desc
TriggerDesc = FieldData{"Desc", "desc", 1}
// TriggerTags represents field data for moira.Trigger.Tags
TriggerTags = FieldData{"Tags", "tags", 0}
// TriggerLastCheckScore represents field data for moira.CheckData score
TriggerLastCheckScore = FieldData{"LastCheckScore", "", 0}
)

// Trigger represents Moira.Trigger type for full-text search index. It includes only indexed fields
Expand All @@ -49,14 +40,19 @@ func (Trigger) Type() string {
return "moira.indexed.trigger"
}

// String returns TriggerField name. It works like enum
func (field TriggerField) String() string {
return triggerFieldNames[field]
// String returns TriggerField name.
func (field FieldData) String() string {
return field.Name
}

// GetTagValue returns TriggerField value used in marshalling.
func (field FieldData) GetTagValue() string {
return field.NameTag
}

// GetTagValue returns TriggerField value used in marshalling. It works like enum
func (field TriggerField) GetTagValue() string {
return triggerFieldTagValues[field]
// GetPriority returns field priority
func (field FieldData) GetPriority() float64 {
return field.Priority
}

// GetDocumentMapping returns Bleve.mapping.DocumentMapping for Trigger type
Expand Down
31 changes: 23 additions & 8 deletions index/mapping/trigger_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,38 @@ package mapping
import (
"github.com/moira-alert/moira"
. "github.com/smartystreets/goconvey/convey"
"log"
"reflect"
"strings"
"testing"
)

var testTriggerFields = []FieldData{
TriggerID,
TriggerName,
TriggerDesc,
TriggerTags,
TriggerLastCheckScore,
}

func TestTriggerField_GetPriority(t *testing.T) {
expected := []float64{5, 3, 1, 0, 0}
actual := make([]float64, 0, len(testTriggerFields))
Convey("Test GetPriority returns correct field priority", t, func() {
for _, triggerField := range testTriggerFields {
fieldName, fieldPriority := triggerField.String(), triggerField.GetPriority()
log.Printf("field: %s priority: %f", fieldName, fieldPriority)
actual = append(actual, triggerField.GetPriority())
}
So(actual, ShouldResemble, expected)
})
}

func TestTriggerField_GetTagValue(t *testing.T) {
// This test is necessary to make sure that
// SearchResult will contain highlights for actual moira.Trigger structure
triggerFields := []TriggerField{
TriggerID,
TriggerName,
TriggerDesc,
TriggerTags,
TriggerLastCheckScore,
}
Convey("Test GetTagValue returns correct JSON tag", t, func() {
for _, triggerField := range triggerFields {
for _, triggerField := range testTriggerFields {
actual := getTagByFieldName(triggerField.String())
expected := triggerField.GetTagValue()
So(actual, ShouldEqual, expected)
Expand Down

0 comments on commit 654b4ea

Please sign in to comment.