File tree Expand file tree Collapse file tree 2 files changed +13
-1
lines changed Expand file tree Collapse file tree 2 files changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -95,7 +95,18 @@ pub fn search(req: &mut dyn Request) -> CargoResult<Response> {
95
95
) ;
96
96
}
97
97
98
- if let Some ( kw) = params. get ( "keyword" ) {
98
+ if let Some ( kws) = params. get ( "all_keywords" ) {
99
+ let names: Vec < _ > = kws. split_whitespace ( ) . map ( |name| name. to_lowercase ( ) ) . collect ( ) ;
100
+
101
+ query = query. filter (
102
+ crates:: id. eq_any (
103
+ crates_keywords:: table
104
+ . select ( crates_keywords:: crate_id)
105
+ . inner_join ( keywords:: table)
106
+ . filter ( crate :: lower ( keywords:: keyword) . eq ( any ( names) ) ) ,
107
+ ) ,
108
+ ) ;
109
+ } else if let Some ( kw) = params. get ( "keyword" ) {
99
110
query = query. filter (
100
111
crates:: id. eq_any (
101
112
crates_keywords:: table
Original file line number Diff line number Diff line change @@ -139,6 +139,7 @@ fn index_queries() {
139
139
assert_eq ! ( anon. search( "keyword=kw1" ) . crates. len( ) , 2 ) ;
140
140
assert_eq ! ( anon. search( "keyword=KW1" ) . crates. len( ) , 2 ) ;
141
141
assert_eq ! ( anon. search( "keyword=kw2" ) . crates. len( ) , 0 ) ;
142
+ assert_eq ! ( anon. search( "keyword=kw1&keyword=kw3" ) . crates. len( ) , 3 ) ;
142
143
143
144
assert_eq ! ( anon. search( "q=foo&keyword=kw1" ) . crates. len( ) , 1 ) ;
144
145
assert_eq ! ( anon. search( "q=foo2&keyword=kw1" ) . crates. len( ) , 0 ) ;
You can’t perform that action at this time.
0 commit comments