diff options
Diffstat (limited to 'vendor/github.com/olivere/elastic/termvectors.go')
-rw-r--r-- | vendor/github.com/olivere/elastic/termvectors.go | 464 |
1 files changed, 0 insertions, 464 deletions
diff --git a/vendor/github.com/olivere/elastic/termvectors.go b/vendor/github.com/olivere/elastic/termvectors.go deleted file mode 100644 index 5943ad14f..000000000 --- a/vendor/github.com/olivere/elastic/termvectors.go +++ /dev/null @@ -1,464 +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 ( - "context" - "fmt" - "net/url" - "strings" - - "github.com/olivere/elastic/uritemplates" -) - -// TermvectorsService returns information and statistics on terms in the -// fields of a particular document. The document could be stored in the -// index or artificially provided by the user. -// -// See https://www.elastic.co/guide/en/elasticsearch/reference/6.0/docs-termvectors.html -// for documentation. -type TermvectorsService struct { - client *Client - pretty bool - id string - index string - typ string - dfs *bool - doc interface{} - fieldStatistics *bool - fields []string - filter *TermvectorsFilterSettings - perFieldAnalyzer map[string]string - offsets *bool - parent string - payloads *bool - positions *bool - preference string - realtime *bool - routing string - termStatistics *bool - version interface{} - versionType string - bodyJson interface{} - bodyString string -} - -// NewTermvectorsService creates a new TermvectorsService. -func NewTermvectorsService(client *Client) *TermvectorsService { - return &TermvectorsService{ - client: client, - } -} - -// Index in which the document resides. -func (s *TermvectorsService) Index(index string) *TermvectorsService { - s.index = index - return s -} - -// Type of the document. -func (s *TermvectorsService) Type(typ string) *TermvectorsService { - s.typ = typ - return s -} - -// Id of the document. -func (s *TermvectorsService) Id(id string) *TermvectorsService { - s.id = id - return s -} - -// Dfs specifies if distributed frequencies should be returned instead -// shard frequencies. -func (s *TermvectorsService) Dfs(dfs bool) *TermvectorsService { - s.dfs = &dfs - return s -} - -// Doc is the document to analyze. -func (s *TermvectorsService) Doc(doc interface{}) *TermvectorsService { - s.doc = doc - return s -} - -// FieldStatistics specifies if document count, sum of document frequencies -// and sum of total term frequencies should be returned. -func (s *TermvectorsService) FieldStatistics(fieldStatistics bool) *TermvectorsService { - s.fieldStatistics = &fieldStatistics - return s -} - -// Fields a list of fields to return. -func (s *TermvectorsService) Fields(fields ...string) *TermvectorsService { - if s.fields == nil { - s.fields = make([]string, 0) - } - s.fields = append(s.fields, fields...) - return s -} - -// Filter adds terms filter settings. -func (s *TermvectorsService) Filter(filter *TermvectorsFilterSettings) *TermvectorsService { - s.filter = filter - return s -} - -// PerFieldAnalyzer allows to specify a different analyzer than the one -// at the field. -func (s *TermvectorsService) PerFieldAnalyzer(perFieldAnalyzer map[string]string) *TermvectorsService { - s.perFieldAnalyzer = perFieldAnalyzer - return s -} - -// Offsets specifies if term offsets should be returned. -func (s *TermvectorsService) Offsets(offsets bool) *TermvectorsService { - s.offsets = &offsets - return s -} - -// Parent id of documents. -func (s *TermvectorsService) Parent(parent string) *TermvectorsService { - s.parent = parent - return s -} - -// Payloads specifies if term payloads should be returned. -func (s *TermvectorsService) Payloads(payloads bool) *TermvectorsService { - s.payloads = &payloads - return s -} - -// Positions specifies if term positions should be returned. -func (s *TermvectorsService) Positions(positions bool) *TermvectorsService { - s.positions = &positions - return s -} - -// Preference specify the node or shard the operation -// should be performed on (default: random). -func (s *TermvectorsService) Preference(preference string) *TermvectorsService { - s.preference = preference - return s -} - -// Realtime specifies if request is real-time as opposed to -// near-real-time (default: true). -func (s *TermvectorsService) Realtime(realtime bool) *TermvectorsService { - s.realtime = &realtime - return s -} - -// Routing is a specific routing value. -func (s *TermvectorsService) Routing(routing string) *TermvectorsService { - s.routing = routing - return s -} - -// TermStatistics specifies if total term frequency and document frequency -// should be returned. -func (s *TermvectorsService) TermStatistics(termStatistics bool) *TermvectorsService { - s.termStatistics = &termStatistics - return s -} - -// Version an explicit version number for concurrency control. -func (s *TermvectorsService) Version(version interface{}) *TermvectorsService { - s.version = version - return s -} - -// VersionType specifies a version type ("internal", "external", or "external_gte"). -func (s *TermvectorsService) VersionType(versionType string) *TermvectorsService { - s.versionType = versionType - return s -} - -// Pretty indicates that the JSON response be indented and human readable. -func (s *TermvectorsService) Pretty(pretty bool) *TermvectorsService { - s.pretty = pretty - return s -} - -// BodyJson defines the body parameters. See documentation. -func (s *TermvectorsService) BodyJson(body interface{}) *TermvectorsService { - s.bodyJson = body - return s -} - -// BodyString defines the body parameters as a string. See documentation. -func (s *TermvectorsService) BodyString(body string) *TermvectorsService { - s.bodyString = body - return s -} - -// buildURL builds the URL for the operation. -func (s *TermvectorsService) buildURL() (string, url.Values, error) { - var pathParam = map[string]string{ - "index": s.index, - "type": s.typ, - } - var path string - var err error - - // Build URL - if s.id != "" { - pathParam["id"] = s.id - path, err = uritemplates.Expand("/{index}/{type}/{id}/_termvectors", pathParam) - } else { - path, err = uritemplates.Expand("/{index}/{type}/_termvectors", pathParam) - } - - if err != nil { - return "", url.Values{}, err - } - - // Add query string parameters - params := url.Values{} - if s.pretty { - params.Set("pretty", "true") - } - if s.dfs != nil { - params.Set("dfs", fmt.Sprintf("%v", *s.dfs)) - } - if s.fieldStatistics != nil { - params.Set("field_statistics", fmt.Sprintf("%v", *s.fieldStatistics)) - } - if len(s.fields) > 0 { - params.Set("fields", strings.Join(s.fields, ",")) - } - if s.offsets != nil { - params.Set("offsets", fmt.Sprintf("%v", *s.offsets)) - } - if s.parent != "" { - params.Set("parent", s.parent) - } - if s.payloads != nil { - params.Set("payloads", fmt.Sprintf("%v", *s.payloads)) - } - if s.positions != nil { - params.Set("positions", fmt.Sprintf("%v", *s.positions)) - } - if s.preference != "" { - params.Set("preference", s.preference) - } - if s.realtime != nil { - params.Set("realtime", fmt.Sprintf("%v", *s.realtime)) - } - if s.routing != "" { - params.Set("routing", s.routing) - } - if s.termStatistics != nil { - params.Set("term_statistics", fmt.Sprintf("%v", *s.termStatistics)) - } - if s.version != nil { - params.Set("version", fmt.Sprintf("%v", s.version)) - } - if s.versionType != "" { - params.Set("version_type", s.versionType) - } - return path, params, nil -} - -// Validate checks if the operation is valid. -func (s *TermvectorsService) Validate() error { - var invalid []string - if s.index == "" { - invalid = append(invalid, "Index") - } - if s.typ == "" { - invalid = append(invalid, "Type") - } - if len(invalid) > 0 { - return fmt.Errorf("missing required fields: %v", invalid) - } - return nil -} - -// Do executes the operation. -func (s *TermvectorsService) Do(ctx context.Context) (*TermvectorsResponse, error) { - // Check pre-conditions - if err := s.Validate(); err != nil { - return nil, err - } - - // Get URL for request - path, params, err := s.buildURL() - if err != nil { - return nil, err - } - - // Setup HTTP request body - var body interface{} - if s.bodyJson != nil { - body = s.bodyJson - } else if s.bodyString != "" { - body = s.bodyString - } else { - data := make(map[string]interface{}) - if s.doc != nil { - data["doc"] = s.doc - } - if len(s.perFieldAnalyzer) > 0 { - data["per_field_analyzer"] = s.perFieldAnalyzer - } - if s.filter != nil { - src, err := s.filter.Source() - if err != nil { - return nil, err - } - data["filter"] = src - } - if len(data) > 0 { - body = data - } - } - - // Get HTTP response - res, err := s.client.PerformRequest(ctx, PerformRequestOptions{ - Method: "GET", - Path: path, - Params: params, - Body: body, - }) - if err != nil { - return nil, err - } - - // Return operation response - ret := new(TermvectorsResponse) - if err := s.client.decoder.Decode(res.Body, ret); err != nil { - return nil, err - } - return ret, nil -} - -// -- Filter settings -- - -// TermvectorsFilterSettings adds additional filters to a Termsvector request. -// It allows to filter terms based on their tf-idf scores. -// See https://www.elastic.co/guide/en/elasticsearch/reference/6.0/docs-termvectors.html#_terms_filtering -// for more information. -type TermvectorsFilterSettings struct { - maxNumTerms *int64 - minTermFreq *int64 - maxTermFreq *int64 - minDocFreq *int64 - maxDocFreq *int64 - minWordLength *int64 - maxWordLength *int64 -} - -// NewTermvectorsFilterSettings creates and initializes a new TermvectorsFilterSettings struct. -func NewTermvectorsFilterSettings() *TermvectorsFilterSettings { - return &TermvectorsFilterSettings{} -} - -// MaxNumTerms specifies the maximum number of terms the must be returned per field. -func (fs *TermvectorsFilterSettings) MaxNumTerms(value int64) *TermvectorsFilterSettings { - fs.maxNumTerms = &value - return fs -} - -// MinTermFreq ignores words with less than this frequency in the source doc. -func (fs *TermvectorsFilterSettings) MinTermFreq(value int64) *TermvectorsFilterSettings { - fs.minTermFreq = &value - return fs -} - -// MaxTermFreq ignores words with more than this frequency in the source doc. -func (fs *TermvectorsFilterSettings) MaxTermFreq(value int64) *TermvectorsFilterSettings { - fs.maxTermFreq = &value - return fs -} - -// MinDocFreq ignores terms which do not occur in at least this many docs. -func (fs *TermvectorsFilterSettings) MinDocFreq(value int64) *TermvectorsFilterSettings { - fs.minDocFreq = &value - return fs -} - -// MaxDocFreq ignores terms which occur in more than this many docs. -func (fs *TermvectorsFilterSettings) MaxDocFreq(value int64) *TermvectorsFilterSettings { - fs.maxDocFreq = &value - return fs -} - -// MinWordLength specifies the minimum word length below which words will be ignored. -func (fs *TermvectorsFilterSettings) MinWordLength(value int64) *TermvectorsFilterSettings { - fs.minWordLength = &value - return fs -} - -// MaxWordLength specifies the maximum word length above which words will be ignored. -func (fs *TermvectorsFilterSettings) MaxWordLength(value int64) *TermvectorsFilterSettings { - fs.maxWordLength = &value - return fs -} - -// Source returns JSON for the query. -func (fs *TermvectorsFilterSettings) Source() (interface{}, error) { - source := make(map[string]interface{}) - if fs.maxNumTerms != nil { - source["max_num_terms"] = *fs.maxNumTerms - } - if fs.minTermFreq != nil { - source["min_term_freq"] = *fs.minTermFreq - } - if fs.maxTermFreq != nil { - source["max_term_freq"] = *fs.maxTermFreq - } - if fs.minDocFreq != nil { - source["min_doc_freq"] = *fs.minDocFreq - } - if fs.maxDocFreq != nil { - source["max_doc_freq"] = *fs.maxDocFreq - } - if fs.minWordLength != nil { - source["min_word_length"] = *fs.minWordLength - } - if fs.maxWordLength != nil { - source["max_word_length"] = *fs.maxWordLength - } - return source, nil -} - -// -- Response types -- - -type TokenInfo struct { - StartOffset int64 `json:"start_offset"` - EndOffset int64 `json:"end_offset"` - Position int64 `json:"position"` - Payload string `json:"payload"` -} - -type TermsInfo struct { - DocFreq int64 `json:"doc_freq"` - Score float64 `json:"score"` - TermFreq int64 `json:"term_freq"` - Ttf int64 `json:"ttf"` - Tokens []TokenInfo `json:"tokens"` -} - -type FieldStatistics struct { - DocCount int64 `json:"doc_count"` - SumDocFreq int64 `json:"sum_doc_freq"` - SumTtf int64 `json:"sum_ttf"` -} - -type TermVectorsFieldInfo struct { - FieldStatistics FieldStatistics `json:"field_statistics"` - Terms map[string]TermsInfo `json:"terms"` -} - -// TermvectorsResponse is the response of TermvectorsService.Do. -type TermvectorsResponse struct { - Index string `json:"_index"` - Type string `json:"_type"` - Id string `json:"_id,omitempty"` - Version int `json:"_version"` - Found bool `json:"found"` - Took int64 `json:"took"` - TermVectors map[string]TermVectorsFieldInfo `json:"term_vectors"` -} |