如何在MySQL数据库中提供来自多个供应商的产品的高质量搜索结果?

问题描述:

我有一个包含一个表称为产品,MySQL数据库,作为一个例子的结构:如何在MySQL数据库中提供来自多个供应商的产品的高质量搜索结果?

  • PRODUCT_ID
  • 价格
  • 厂商

产品是从每个供应商的文件导入到数据库,因此例如供应商1可能已导入记录1 - 1500,然后供应商2可能导入记录1500 - 4500,供应商3 4500 - 5250等。

每个供应商可能有多种类型的同一产品。让我们用餐盘的例子。所以每个供应商可能有许多不同的品牌和款式的餐盘。

当用户搜索餐盘时,使用MATCH ... AGAINST查询我会从每个供应商那里获得大量结果,但是,搜索结果将与它们在数据库中的顺序相同供应商,所以,我甚至可以在供应商2看到来自供应商1的一百个餐盘。

如果搜索结果不是特定的,以便混合结果,是否有更好的方法来显示搜索结果一点?

+0

你希望以什么顺序显示它们?如果你想要完全随机的顺序,那么'ORDER BY RANDOM();'。如果您想要一个随机但一致的订单,请在每一行上添加一个随机ID并按顺序排列。如果这些对你而言足够随机,你还可以按名称或价格订购。 – evan

您需要使用ORDER BY以及任意列。按添加日期对其进行排序,或者其他字段以显示随机结果。

对此的一个相当不好的解决方案是使用ORDER BY RAND(),但请注意,每次页面重新加载时,这将给出不同的随机顺序。

另一种解决方案可能是FULLTEXT搜索(和索引)多个列;这会给出更多变化的结果集。