@@ -142,7 +142,7 @@ func (b *Indexer) addUpdate(ctx context.Context, batchWriter git.WriteCloserErro
142
142
return err
143
143
}
144
144
if size , err = strconv .ParseInt (strings .TrimSpace (stdout ), 10 , 64 ); err != nil {
145
- return fmt .Errorf ("Misformatted git cat-file output: %w" , err )
145
+ return fmt .Errorf ("misformatted git cat-file output: %w" , err )
146
146
}
147
147
}
148
148
@@ -233,26 +233,26 @@ func (b *Indexer) Delete(_ context.Context, repoID int64) error {
233
233
234
234
// Search searches for files in the specified repo.
235
235
// Returns the matching file-paths
236
- func (b * Indexer ) Search (ctx context.Context , repoIDs [] int64 , language , keyword string , page , pageSize int , isFuzzy bool ) (int64 , []* internal.SearchResult , []* internal.SearchResultLanguages , error ) {
236
+ func (b * Indexer ) Search (ctx context.Context , opts * internal. SearchOptions ) (int64 , []* internal.SearchResult , []* internal.SearchResultLanguages , error ) {
237
237
var (
238
238
indexerQuery query.Query
239
239
keywordQuery query.Query
240
240
)
241
241
242
- if isFuzzy {
243
- phraseQuery := bleve .NewMatchPhraseQuery (keyword )
242
+ if opts . IsKeywordFuzzy {
243
+ phraseQuery := bleve .NewMatchPhraseQuery (opts . Keyword )
244
244
phraseQuery .FieldVal = "Content"
245
245
phraseQuery .Analyzer = repoIndexerAnalyzer
246
246
keywordQuery = phraseQuery
247
247
} else {
248
- prefixQuery := bleve .NewPrefixQuery (keyword )
248
+ prefixQuery := bleve .NewPrefixQuery (opts . Keyword )
249
249
prefixQuery .FieldVal = "Content"
250
250
keywordQuery = prefixQuery
251
251
}
252
252
253
- if len (repoIDs ) > 0 {
254
- repoQueries := make ([]query.Query , 0 , len (repoIDs ))
255
- for _ , repoID := range repoIDs {
253
+ if len (opts . RepoIDs ) > 0 {
254
+ repoQueries := make ([]query.Query , 0 , len (opts . RepoIDs ))
255
+ for _ , repoID := range opts . RepoIDs {
256
256
repoQueries = append (repoQueries , inner_bleve .NumericEqualityQuery (repoID , "RepoID" ))
257
257
}
258
258
@@ -266,8 +266,8 @@ func (b *Indexer) Search(ctx context.Context, repoIDs []int64, language, keyword
266
266
267
267
// Save for reuse without language filter
268
268
facetQuery := indexerQuery
269
- if len (language ) > 0 {
270
- languageQuery := bleve .NewMatchQuery (language )
269
+ if len (opts . Language ) > 0 {
270
+ languageQuery := bleve .NewMatchQuery (opts . Language )
271
271
languageQuery .FieldVal = "Language"
272
272
languageQuery .Analyzer = analyzer_keyword .Name
273
273
@@ -277,12 +277,12 @@ func (b *Indexer) Search(ctx context.Context, repoIDs []int64, language, keyword
277
277
)
278
278
}
279
279
280
- from := ( page - 1 ) * pageSize
280
+ from , pageSize := opts . GetSkipTake ()
281
281
searchRequest := bleve .NewSearchRequestOptions (indexerQuery , pageSize , from , false )
282
282
searchRequest .Fields = []string {"Content" , "RepoID" , "Language" , "CommitID" , "UpdatedAt" }
283
283
searchRequest .IncludeLocations = true
284
284
285
- if len (language ) == 0 {
285
+ if len (opts . Language ) == 0 {
286
286
searchRequest .AddFacet ("languages" , bleve .NewFacetRequest ("Language" , 10 ))
287
287
}
288
288
@@ -326,7 +326,7 @@ func (b *Indexer) Search(ctx context.Context, repoIDs []int64, language, keyword
326
326
}
327
327
328
328
searchResultLanguages := make ([]* internal.SearchResultLanguages , 0 , 10 )
329
- if len (language ) > 0 {
329
+ if len (opts . Language ) > 0 {
330
330
// Use separate query to go get all language counts
331
331
facetRequest := bleve .NewSearchRequestOptions (facetQuery , 1 , 0 , false )
332
332
facetRequest .Fields = []string {"Content" , "RepoID" , "Language" , "CommitID" , "UpdatedAt" }
0 commit comments