php - PHP 的加权搜索算法

标签 php mysql algorithm search weighted

问题

我的表中有 5 个项目[1],每个项目有 4 个属性(红、绿、蓝、黄)。
每个属性的分数可以在 1 到 9 之间[2]

在我的网站上执行搜索时,用户可以通过为每个属性提供 1 到 9 之间的分数来指定每个属性与搜索结果的相关程度。

我应该使用什么算法来根据用户偏好计算和排序结果?

资源

[1] - 创建表项( id INT NOT NULL AUTO_INCRMENT ,名称 VARCHAR(128) ,红色 INT ,绿色 INT ,蓝色 INT ,黄色 INT ,主键(id) );

[2] - 插入项目(名称、红色、绿色、蓝色、黄色)值 ('随机 1', 4, 1, 9, 4), ('随机2', 1, 1, 2, 9), ('随机 3', 5, 7, 6, 3), ('随机 4', 2, 2, 8, 1);

最佳答案

将搜索标点符号计算为字段并按其对查询进行排序

SELECT *, (red * @rw) AS w1, (green * @gw) AS w2, (blue* @bw) AS w3, (yellow * @yw) AS w4, (w1 + w2 + w3 + w4) AS result 
  FROM items ORDER BY result DESC; 

@rw => 红色权重,@bw => 蓝色权重,等等...

关于php - PHP 的加权搜索算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7473592/

相关文章:

php - 我希望我的搜索只显示具有匹配字段值的结果。这是怎么做到的?

c++ - 排列程序无法写入数组 - 运行时错误

php - 在查询中使用 while 循环

php - 使用 mysql 使用时区 php 查找打开和关闭状态

php - 如何通过PHP和mysql建立无限级菜单

mysql连接具有相同列值的两行并计算某些列值并返回一行中的所有行

php - 利用浏览器缓存

mysql - Mariadb服务器

函数的 C++ 时间限制

c++ - Prim 和 Boruvka 的最小生成树算法