Skip to content

Commit 478a463

Browse files
committed
Order first by exact match in results
1 parent 8e60347 commit 478a463

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

src/krate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ pub fn index(req: &mut Request) -> CargoResult<Response> {
476476
plainto_tsquery($1) q,
477477
ts_rank_cd(textsearchable_index_col, q) rank
478478
WHERE q @@ textsearchable_index_col
479-
ORDER BY rank DESC, crates.name ASC
479+
ORDER BY crates.name == $1 DESC, rank DESC, crates.name ASC
480480
LIMIT $2 OFFSET $3".to_string(),
481481
"SELECT COUNT(crates.*) FROM crates,
482482
plainto_tsquery($1) q

src/tests/krate.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ fn index_queries() {
8888
let (krate, _) = ::mock_crate(&mut req, krate.clone());
8989
let krate2 = ::krate("BAR");
9090
let (krate2, _) = ::mock_crate(&mut req, krate2.clone());
91+
let krate3 = ::krate("BAR-2");
92+
::mock_crate(&mut req, krate3.clone());
9193
Keyword::update_crate(tx(&req), &krate, &["kw1".into()]).unwrap();
9294
Keyword::update_crate(tx(&req), &krate2, &["KW1".into()]).unwrap();
9395

@@ -103,6 +105,10 @@ fn index_queries() {
103105
assert_eq!(::json::<CrateList>(&mut response).meta.total, 1);
104106
let mut response = ok_resp!(middle.call(req.with_query("q=description")));
105107
assert_eq!(::json::<CrateList>(&mut response).meta.total, 1);
108+
let mut response = ok_resp!(middle.call(req.with_query("q=bar")));
109+
assert_eq!(::json::<CrateList>(&mut response).meta.total, 2);
110+
assert_eq!(::json::<CrateList>(&mut response).crates[0].name, "BAR");
111+
assert_eq!(::json::<CrateList>(&mut response).crates[1].name, "BAR-2");
106112

107113
let query = format!("user_id={}", u.id);
108114
let mut response = ok_resp!(middle.call(req.with_query(&query)));

0 commit comments

Comments
 (0)