func (q *MatchPhraseQuery) Source() (interface{}, error) {
	source := make(map[string]interface{})
	match := make(map[string]interface{})
	source["match_phrase"] = match
	query := make(map[string]interface{})
	match[q.name] = query
	query["query"] = q.value
	if q.analyzer != "" {
		query["analyzer"] = q.analyzer
	}
	if q.slop != nil {
		query["slop"] = *q.slop
	}
	if q.boost != nil {
		query["boost"] = *q.boost
	}
	if q.queryName != "" {
		query["_name"] = q.queryName
	}
	return source, nil
}
Source returns JSON for the function score query.
package elastic
type MatchPhraseQuery struct {
	name      string
	value     interface{}
	analyzer  string
	slop      *int
	boost     *float64
	queryName string
}
func NewMatchPhraseQuery(name string, value interface{}) *MatchPhraseQuery {
	return &MatchPhraseQuery{name: name, value: value}
}
func (q *MatchPhraseQuery) Analyzer(analyzer string) *MatchPhraseQuery {
	q.analyzer = analyzer
	return q
}
func (q *MatchPhraseQuery) Slop(slop int) *MatchPhraseQuery {
	q.slop = &slop
	return q
}
func (q *MatchPhraseQuery) Boost(boost float64) *MatchPhraseQuery {
	q.boost = &boost
	return q
}
func (q *MatchPhraseQuery) QueryName(queryName string) *MatchPhraseQuery {
	q.queryName = queryName
	return q
}