如何在MySQL数据库中提供来自多个供应商的产品的高质量搜索结果?
问题描述:
我有一个包含一个表称为产品,MySQL数据库,作为一个例子的结构:如何在MySQL数据库中提供来自多个供应商的产品的高质量搜索结果?
- PRODUCT_ID
- 名
- 价格
- 厂商
产品是从每个供应商的文件导入到数据库,因此例如供应商1可能已导入记录1 - 1500,然后供应商2可能导入记录1500 - 4500,供应商3 4500 - 5250等。
每个供应商可能有多种类型的同一产品。让我们用餐盘的例子。所以每个供应商可能有许多不同的品牌和款式的餐盘。
当用户搜索餐盘时,使用MATCH ... AGAINST查询我会从每个供应商那里获得大量结果,但是,搜索结果将与它们在数据库中的顺序相同供应商,所以,我甚至可以在供应商2看到来自供应商1的一百个餐盘。
如果搜索结果不是特定的,以便混合结果,是否有更好的方法来显示搜索结果一点?
答
您需要使用ORDER BY
以及任意列。按添加日期对其进行排序,或者其他字段以显示随机结果。
对此的一个相当不好的解决方案是使用ORDER BY RAND()
,但请注意,每次页面重新加载时,这将给出不同的随机顺序。
另一种解决方案可能是FULLTEXT
搜索(和索引)多个列;这会给出更多变化的结果集。
你希望以什么顺序显示它们?如果你想要完全随机的顺序,那么'ORDER BY RANDOM();'。如果您想要一个随机但一致的订单,请在每一行上添加一个随机ID并按顺序排列。如果这些对你而言足够随机,你还可以按名称或价格订购。 – evan