mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-30 06:38:37 -04:00 
			
		
		
		
	Issue search support elasticsearch (#9428)
* Issue search support elasticsearch * Fix lint * Add indexer name on app.ini * add a warnning on SearchIssuesByKeyword * improve code
This commit is contained in:
		
							
								
								
									
										90
									
								
								vendor/github.com/olivere/elastic/v7/suggest_field.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								vendor/github.com/olivere/elastic/v7/suggest_field.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,90 @@ | ||||
| // 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 ( | ||||
| 	"encoding/json" | ||||
| 	"errors" | ||||
| ) | ||||
|  | ||||
| // SuggestField can be used by the caller to specify a suggest field | ||||
| // at index time. For a detailed example, see e.g. | ||||
| // https://www.elastic.co/blog/you-complete-me. | ||||
| type SuggestField struct { | ||||
| 	inputs         []string | ||||
| 	weight         int | ||||
| 	contextQueries []SuggesterContextQuery | ||||
| } | ||||
|  | ||||
| func NewSuggestField(input ...string) *SuggestField { | ||||
| 	return &SuggestField{ | ||||
| 		inputs: input, | ||||
| 		weight: -1, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (f *SuggestField) Input(input ...string) *SuggestField { | ||||
| 	if f.inputs == nil { | ||||
| 		f.inputs = make([]string, 0) | ||||
| 	} | ||||
| 	f.inputs = append(f.inputs, input...) | ||||
| 	return f | ||||
| } | ||||
|  | ||||
| func (f *SuggestField) Weight(weight int) *SuggestField { | ||||
| 	f.weight = weight | ||||
| 	return f | ||||
| } | ||||
|  | ||||
| func (f *SuggestField) ContextQuery(queries ...SuggesterContextQuery) *SuggestField { | ||||
| 	f.contextQueries = append(f.contextQueries, queries...) | ||||
| 	return f | ||||
| } | ||||
|  | ||||
| // MarshalJSON encodes SuggestField into JSON. | ||||
| func (f *SuggestField) MarshalJSON() ([]byte, error) { | ||||
| 	source := make(map[string]interface{}) | ||||
|  | ||||
| 	if f.inputs != nil { | ||||
| 		switch len(f.inputs) { | ||||
| 		case 1: | ||||
| 			source["input"] = f.inputs[0] | ||||
| 		default: | ||||
| 			source["input"] = f.inputs | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if f.weight >= 0 { | ||||
| 		source["weight"] = f.weight | ||||
| 	} | ||||
|  | ||||
| 	switch len(f.contextQueries) { | ||||
| 	case 0: | ||||
| 	case 1: | ||||
| 		src, err := f.contextQueries[0].Source() | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		source["contexts"] = src | ||||
| 	default: | ||||
| 		ctxq := make(map[string]interface{}) | ||||
| 		for _, query := range f.contextQueries { | ||||
| 			src, err := query.Source() | ||||
| 			if err != nil { | ||||
| 				return nil, err | ||||
| 			} | ||||
| 			m, ok := src.(map[string]interface{}) | ||||
| 			if !ok { | ||||
| 				return nil, errors.New("SuggesterContextQuery must be of type map[string]interface{}") | ||||
| 			} | ||||
| 			for k, v := range m { | ||||
| 				ctxq[k] = v | ||||
| 			} | ||||
| 		} | ||||
| 		source["contexts"] = ctxq | ||||
| 	} | ||||
|  | ||||
| 	return json.Marshal(source) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user