在我的rails webapp中,用户可以应用多个过滤器进行搜索。我希望筛选的项目按大多数匹配条件排序。
例:如果用户搜索一辆带有动力转向、动力窗和中心锁的汽车。生成的项必须按照
在rails中这样做的标准方法是什么?
我正在通过编写三个不同的查询来完成上述工作。每人一张。那就加入他们。随着搜索选项的增加,这似乎效率很低。
提前谢谢你。
发布于 2016-02-09 09:05:29
我认为,在这些情况下,最好放弃ActiveRecord,使用直接SQL以获得更好的性能。
可以使用此查询在单个查询中检索和排序结果:
SELECT * FROM
(SELECT
*,
(CASE WHEN condition1 THEN 1 ELSE 0) +
(CASE WHEN condition2 THEN 1 ELSE 0) +
(CASE WHEN condition3 THEN 1 ELSE 0) as filterCount
FROM cars
WHERE condition1
OR condition2
OR condition3)
ORDER BY filterCount DESC发布于 2016-02-09 09:31:23
嘿,你可以试试这些方法,用你可以写的查询。
在查询中使用条件子句查找给定的匹配条件,然后用给定的计数排序给定的记录。
ModelName.select("*,((CASE WHEN (condition1) THEN 1 ELSE 0 END) + (CASE WHEN (condition2) THEN 1 ELSE 0 END)+( CASE WHEN (condition3) THEN 1 ELSE 0 END)) as match_occurance").where("condition1 or condition2 or condition3").order("match_occurance desc")https://stackoverflow.com/questions/35287359
复制相似问题