diff --git a/src/controllers/krate/search.rs b/src/controllers/krate/search.rs index 2d897481194..e61ba527646 100644 --- a/src/controllers/krate/search.rs +++ b/src/controllers/krate/search.rs @@ -33,7 +33,8 @@ use crate::models::krate::{canon_crate_name, ALL_COLUMNS}; /// function out to cover the different use cases, and create unit tests /// for them. pub fn search(req: &mut dyn Request) -> CargoResult { - use diesel::sql_types::Bool; + use diesel::dsl::sql; + use diesel::sql_types::{Bool, Text}; let conn = req.db_conn()?; let (offset, limit) = req.pagination(10, 100)?; @@ -59,9 +60,12 @@ pub fn search(req: &mut dyn Request) -> CargoResult { if !q_string.is_empty() { let sort = params.get("sort").map(|s| &**s).unwrap_or("relevance"); - let q = plainto_tsquery(q_string); + let q = sql::("plainto_tsquery('english', ") + .bind::(q_string) + .sql(")"); query = query.filter( - q.matches(crates::textsearchable_index_col) + q.clone() + .matches(crates::textsearchable_index_col) .or(Crate::like_name(&q_string)), );