@@ -202,17 +202,23 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (RepositoryList, int64, err
202
202
}
203
203
204
204
if opts .Keyword != "" {
205
- var keywordCond = builder .NewCond ()
206
205
// separate keyword
206
+ var subQueryCond = builder .NewCond ()
207
207
for _ , v := range strings .Split (opts .Keyword , "," ) {
208
- subQuery := builder .Select ("repo_topic.repo_id" ).From ("repo_topic" ).
209
- Join ("INNER" , "topic" , "topic.id = repo_topic.topic_id" ).
210
- Where (builder.Like {"topic.name" , strings .ToLower (v )}).
211
- GroupBy ("repo_topic.repo_id" )
212
- keywordCond = keywordCond .Or (builder .In ("id" , subQuery ))
213
- if ! opts .TopicOnly {
214
- keywordCond = keywordCond .Or (builder.Like {"lower_name" , strings .ToLower (v )})
208
+ subQueryCond = subQueryCond .Or (builder.Like {"topic.name" , strings .ToLower (v )})
209
+ }
210
+ subQuery := builder .Select ("repo_topic.repo_id" ).From ("repo_topic" ).
211
+ Join ("INNER" , "topic" , "topic.id = repo_topic.topic_id" ).
212
+ Where (subQueryCond ).
213
+ GroupBy ("repo_topic.repo_id" )
214
+
215
+ var keywordCond = builder .In ("id" , subQuery )
216
+ if ! opts .TopicOnly {
217
+ var likes = builder .NewCond ()
218
+ for _ , v := range strings .Split (opts .Keyword , "," ) {
219
+ likes = likes .Or (builder.Like {"lower_name" , strings .ToLower (v )})
215
220
}
221
+ keywordCond = keywordCond .Or (likes )
216
222
}
217
223
cond = cond .And (keywordCond )
218
224
}
0 commit comments