diff options
Diffstat (limited to 'vendor/github.com/olivere/elastic/search_queries_multi_match.go')
-rw-r--r-- | vendor/github.com/olivere/elastic/search_queries_multi_match.go | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/vendor/github.com/olivere/elastic/search_queries_multi_match.go b/vendor/github.com/olivere/elastic/search_queries_multi_match.go deleted file mode 100644 index b6ff2107e..000000000 --- a/vendor/github.com/olivere/elastic/search_queries_multi_match.go +++ /dev/null @@ -1,275 +0,0 @@ -// 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 - -import ( - "fmt" - "strings" -) - -// MultiMatchQuery builds on the MatchQuery to allow multi-field queries. -// -// For more details, see -// https://www.elastic.co/guide/en/elasticsearch/reference/6.0/query-dsl-multi-match-query.html -type MultiMatchQuery struct { - text interface{} - fields []string - fieldBoosts map[string]*float64 - typ string // best_fields, boolean, most_fields, cross_fields, phrase, phrase_prefix - operator string // AND or OR - analyzer string - boost *float64 - slop *int - fuzziness string - prefixLength *int - maxExpansions *int - minimumShouldMatch string - rewrite string - fuzzyRewrite string - tieBreaker *float64 - lenient *bool - cutoffFrequency *float64 - zeroTermsQuery string - queryName string -} - -// MultiMatchQuery creates and initializes a new MultiMatchQuery. -func NewMultiMatchQuery(text interface{}, fields ...string) *MultiMatchQuery { - q := &MultiMatchQuery{ - text: text, - fields: make([]string, 0), - fieldBoosts: make(map[string]*float64), - } - q.fields = append(q.fields, fields...) - return q -} - -// Field adds a field to run the multi match against. -func (q *MultiMatchQuery) Field(field string) *MultiMatchQuery { - q.fields = append(q.fields, field) - return q -} - -// FieldWithBoost adds a field to run the multi match against with a specific boost. -func (q *MultiMatchQuery) FieldWithBoost(field string, boost float64) *MultiMatchQuery { - q.fields = append(q.fields, field) - q.fieldBoosts[field] = &boost - return q -} - -// Type can be "best_fields", "boolean", "most_fields", "cross_fields", -// "phrase", or "phrase_prefix". -func (q *MultiMatchQuery) Type(typ string) *MultiMatchQuery { - var zero = float64(0.0) - var one = float64(1.0) - - switch strings.ToLower(typ) { - default: // best_fields / boolean - q.typ = "best_fields" - q.tieBreaker = &zero - case "most_fields": - q.typ = "most_fields" - q.tieBreaker = &one - case "cross_fields": - q.typ = "cross_fields" - q.tieBreaker = &zero - case "phrase": - q.typ = "phrase" - q.tieBreaker = &zero - case "phrase_prefix": - q.typ = "phrase_prefix" - q.tieBreaker = &zero - } - return q -} - -// Operator sets the operator to use when using boolean query. -// It can be either AND or OR (default). -func (q *MultiMatchQuery) Operator(operator string) *MultiMatchQuery { - q.operator = operator - return q -} - -// Analyzer sets the analyzer to use explicitly. It defaults to use explicit -// mapping config for the field, or, if not set, the default search analyzer. -func (q *MultiMatchQuery) Analyzer(analyzer string) *MultiMatchQuery { - q.analyzer = analyzer - return q -} - -// Boost sets the boost for this query. -func (q *MultiMatchQuery) Boost(boost float64) *MultiMatchQuery { - q.boost = &boost - return q -} - -// Slop sets the phrase slop if evaluated to a phrase query type. -func (q *MultiMatchQuery) Slop(slop int) *MultiMatchQuery { - q.slop = &slop - return q -} - -// Fuzziness sets the fuzziness used when evaluated to a fuzzy query type. -// It defaults to "AUTO". -func (q *MultiMatchQuery) Fuzziness(fuzziness string) *MultiMatchQuery { - q.fuzziness = fuzziness - return q -} - -// PrefixLength for the fuzzy process. -func (q *MultiMatchQuery) PrefixLength(prefixLength int) *MultiMatchQuery { - q.prefixLength = &prefixLength - return q -} - -// MaxExpansions is the number of term expansions to use when using fuzzy -// or prefix type query. It defaults to unbounded so it's recommended -// to set it to a reasonable value for faster execution. -func (q *MultiMatchQuery) MaxExpansions(maxExpansions int) *MultiMatchQuery { - q.maxExpansions = &maxExpansions - return q -} - -// MinimumShouldMatch represents the minimum number of optional should clauses -// to match. -func (q *MultiMatchQuery) MinimumShouldMatch(minimumShouldMatch string) *MultiMatchQuery { - q.minimumShouldMatch = minimumShouldMatch - return q -} - -func (q *MultiMatchQuery) Rewrite(rewrite string) *MultiMatchQuery { - q.rewrite = rewrite - return q -} - -func (q *MultiMatchQuery) FuzzyRewrite(fuzzyRewrite string) *MultiMatchQuery { - q.fuzzyRewrite = fuzzyRewrite - return q -} - -// TieBreaker for "best-match" disjunction queries (OR queries). -// The tie breaker capability allows documents that match more than one -// query clause (in this case on more than one field) to be scored better -// than documents that match only the best of the fields, without confusing -// this with the better case of two distinct matches in the multiple fields. -// -// A tie-breaker value of 1.0 is interpreted as a signal to score queries as -// "most-match" queries where all matching query clauses are considered for scoring. -func (q *MultiMatchQuery) TieBreaker(tieBreaker float64) *MultiMatchQuery { - q.tieBreaker = &tieBreaker - return q -} - -// Lenient indicates whether format based failures will be ignored. -func (q *MultiMatchQuery) Lenient(lenient bool) *MultiMatchQuery { - q.lenient = &lenient - return q -} - -// CutoffFrequency sets a cutoff value in [0..1] (or absolute number >=1) -// representing the maximum threshold of a terms document frequency to be -// considered a low frequency term. -func (q *MultiMatchQuery) CutoffFrequency(cutoff float64) *MultiMatchQuery { - q.cutoffFrequency = &cutoff - return q -} - -// ZeroTermsQuery can be "all" or "none". -func (q *MultiMatchQuery) ZeroTermsQuery(zeroTermsQuery string) *MultiMatchQuery { - q.zeroTermsQuery = zeroTermsQuery - return q -} - -// QueryName sets the query name for the filter that can be used when -// searching for matched filters per hit. -func (q *MultiMatchQuery) QueryName(queryName string) *MultiMatchQuery { - q.queryName = queryName - return q -} - -// Source returns JSON for the query. -func (q *MultiMatchQuery) Source() (interface{}, error) { - // - // { - // "multi_match" : { - // "query" : "this is a test", - // "fields" : [ "subject", "message" ] - // } - // } - - source := make(map[string]interface{}) - - multiMatch := make(map[string]interface{}) - source["multi_match"] = multiMatch - - multiMatch["query"] = q.text - - if len(q.fields) > 0 { - var fields []string - for _, field := range q.fields { - if boost, found := q.fieldBoosts[field]; found { - if boost != nil { - fields = append(fields, fmt.Sprintf("%s^%f", field, *boost)) - } else { - fields = append(fields, field) - } - } else { - fields = append(fields, field) - } - } - multiMatch["fields"] = fields - } - - if q.typ != "" { - multiMatch["type"] = q.typ - } - - if q.operator != "" { - multiMatch["operator"] = q.operator - } - if q.analyzer != "" { - multiMatch["analyzer"] = q.analyzer - } - if q.boost != nil { - multiMatch["boost"] = *q.boost - } - if q.slop != nil { - multiMatch["slop"] = *q.slop - } - if q.fuzziness != "" { - multiMatch["fuzziness"] = q.fuzziness - } - if q.prefixLength != nil { - multiMatch["prefix_length"] = *q.prefixLength - } - if q.maxExpansions != nil { - multiMatch["max_expansions"] = *q.maxExpansions - } - if q.minimumShouldMatch != "" { - multiMatch["minimum_should_match"] = q.minimumShouldMatch - } - if q.rewrite != "" { - multiMatch["rewrite"] = q.rewrite - } - if q.fuzzyRewrite != "" { - multiMatch["fuzzy_rewrite"] = q.fuzzyRewrite - } - if q.tieBreaker != nil { - multiMatch["tie_breaker"] = *q.tieBreaker - } - if q.lenient != nil { - multiMatch["lenient"] = *q.lenient - } - if q.cutoffFrequency != nil { - multiMatch["cutoff_frequency"] = *q.cutoffFrequency - } - if q.zeroTermsQuery != "" { - multiMatch["zero_terms_query"] = q.zeroTermsQuery - } - if q.queryName != "" { - multiMatch["_name"] = q.queryName - } - return source, nil -} |