我正在创建一个产品区域。所有产品中都有一些关键字 ID。我要实现的是,如果选择了一个产品,我想显示最相关的 页面下方的其他产品。例如数据,
产品编号 |产品名称 |关键词
23 | product1 | 2,4,13
31 | product3 | 2,4,8
10 | product6 | 2,4
11 | product4 | 2,3
34 | product2 | 2,4
54 | product5 | 2,7
12 | product8 | 4,8
假设我必须显示产品的相关产品包含关键字 2 和 4。 目前我正在使用以下获取相关产品
$sql="SELECT * FROM table1 WHERE keywords REGEXP '(^|,)2(,|$)' OR keywords REGEXP '(^|,)4(,|$)' ORDER BY product_id"
但有时这不会返回主要相关的产品。
对于上面的示例数据,product_id 23,31,10,34应该比其他记录具有更高的优先级。
这可能吗?那我应该怎么做才能克服这个问题呢?感谢所有回复。
最佳答案
只需使用 FIND_IN_SET
select t.*,
SIGN(FIND_IN_SET('2',keywords))+SIGN(FIND_IN_SET('4',keywords))
as FindWeight
from t
where
SIGN(FIND_IN_SET('2',keywords))+SIGN(FIND_IN_SET('4',keywords))>0
ORDER BY FindWeight DESC
关于php - 如何根据产品区域中给定的关键字显示最相关的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15239209/