Skip to content

Commit

Permalink
Order first by exact match in results
Browse files Browse the repository at this point in the history
  • Loading branch information
jespino committed Mar 14, 2016
1 parent 8e60347 commit 37854bc
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/krate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ pub fn index(req: &mut Request) -> CargoResult<Response> {
plainto_tsquery($1) q,
ts_rank_cd(textsearchable_index_col, q) rank
WHERE q @@ textsearchable_index_col
ORDER BY rank DESC, crates.name ASC
ORDER BY crates.name = $1 DESC, rank DESC, crates.name ASC
LIMIT $2 OFFSET $3".to_string(),
"SELECT COUNT(crates.*) FROM crates,
plainto_tsquery($1) q
Expand Down
6 changes: 6 additions & 0 deletions src/tests/krate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ fn index_queries() {
let (krate, _) = ::mock_crate(&mut req, krate.clone());
let krate2 = ::krate("BAR");
let (krate2, _) = ::mock_crate(&mut req, krate2.clone());
let krate3 = ::krate("BAR-2");
::mock_crate(&mut req, krate3.clone());
Keyword::update_crate(tx(&req), &krate, &["kw1".into()]).unwrap();
Keyword::update_crate(tx(&req), &krate2, &["KW1".into()]).unwrap();

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

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

0 comments on commit 37854bc

Please sign in to comment.