mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	[Feature] add precise search type for Elastic Search (#12869)
* feat: add type query parameters for specifying precise search * feat: add select dropdown in search box Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		@@ -280,12 +280,23 @@ func (b *BleveIndexer) Delete(repoID int64) error {
 | 
			
		||||
 | 
			
		||||
// Search searches for files in the specified repo.
 | 
			
		||||
// Returns the matching file-paths
 | 
			
		||||
func (b *BleveIndexer) Search(repoIDs []int64, language, keyword string, page, pageSize int) (int64, []*SearchResult, []*SearchResultLanguages, error) {
 | 
			
		||||
	phraseQuery := bleve.NewMatchPhraseQuery(keyword)
 | 
			
		||||
	phraseQuery.FieldVal = "Content"
 | 
			
		||||
	phraseQuery.Analyzer = repoIndexerAnalyzer
 | 
			
		||||
func (b *BleveIndexer) Search(repoIDs []int64, language, keyword string, page, pageSize int, isMatch bool) (int64, []*SearchResult, []*SearchResultLanguages, error) {
 | 
			
		||||
	var (
 | 
			
		||||
		indexerQuery query.Query
 | 
			
		||||
		keywordQuery query.Query
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	if isMatch {
 | 
			
		||||
		prefixQuery := bleve.NewPrefixQuery(keyword)
 | 
			
		||||
		prefixQuery.FieldVal = "Content"
 | 
			
		||||
		keywordQuery = prefixQuery
 | 
			
		||||
	} else {
 | 
			
		||||
		phraseQuery := bleve.NewMatchPhraseQuery(keyword)
 | 
			
		||||
		phraseQuery.FieldVal = "Content"
 | 
			
		||||
		phraseQuery.Analyzer = repoIndexerAnalyzer
 | 
			
		||||
		keywordQuery = phraseQuery
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var indexerQuery query.Query
 | 
			
		||||
	if len(repoIDs) > 0 {
 | 
			
		||||
		var repoQueries = make([]query.Query, 0, len(repoIDs))
 | 
			
		||||
		for _, repoID := range repoIDs {
 | 
			
		||||
@@ -294,10 +305,10 @@ func (b *BleveIndexer) Search(repoIDs []int64, language, keyword string, page, p
 | 
			
		||||
 | 
			
		||||
		indexerQuery = bleve.NewConjunctionQuery(
 | 
			
		||||
			bleve.NewDisjunctionQuery(repoQueries...),
 | 
			
		||||
			phraseQuery,
 | 
			
		||||
			keywordQuery,
 | 
			
		||||
		)
 | 
			
		||||
	} else {
 | 
			
		||||
		indexerQuery = phraseQuery
 | 
			
		||||
		indexerQuery = keywordQuery
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Save for reuse without language filter
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user