根据具有过滤器的类别进行搜索

时间:2013-01-02 10:28:10

标签: php search filter search-engine concept

使用过滤器进行搜索表单的最佳做法是什么?过滤器取决于类别? 例如:如果你去ebay并选择一个类别,那么过滤器在手机左侧(过滤器:品牌,操作系统......)或时尚类别(过滤器:尺寸,颜色等)不同。 。)...

在我看来我会在DB中做更多的表。每个表为一个类别(cat_cellphone,cat_fashion ......)。然后根据类别(不是一个产品表,其中一列包含类别ID)将产品中的一个放入其中。 这些表是不同的,其中列名称由类别表征。 接下来,应该做更多搜索表单并调用过滤器属于该类别的表单。

这是一个好的概念还是在大型项目中还有其他公认的做法?

2 个答案:

答案 0 :(得分:3)

不,拥有多个表是个坏主意。

总的来说。使用具有主键的表而不是两列。 (主键可能跨越多个列。)

列将是categoryname / filtername。

如果您不喜欢这样的主键,并且始终使用自动增量列,您仍然可以在两列上创建索引。

列将是:id / categoryname / filtername / filtertext

答案 1 :(得分:1)

使用多个表来存储您的产品不是一个好主意。因为会有类别重叠的产品会导致在多个表中存储相同的产品。

只需使用带有ID,product_number,description等的产品表和类别表来存储不同的类别。然后你可以直接链接它们,如:

产品表:

ID product_number description category
1  00001          Screwdriver 1

分类表: ID描述 1工具

您甚至可以使用额外列扩展类别表,以通过寻址子类别的父级来使用子类别:

带子类别的类别表:

ID description      parent
1  Tools            NULL
2  Automatic tools  1

如果您不喜欢直接链接到产品表中的类别表,您可以使用链接表:

PRODUCT_CATEGORY:

Product_ID Category_ID
1          1

希望这能回答你的问题。

编辑,添加过滤表:

要为产品添加过滤功能,您可以使用表格作为过滤器和链接表,如下所示:

过滤器:

Filter_ID description value
1         brand       Bosch
2         brand       Bahco
3         type        Phillips

Product_Filter:

Product_ID Filter_ID
1          1
1          3

这样,您可以将多个过滤器链接到每个产品,并多次使用相同的过滤器。

你甚至可以通过使用另一个表来获得过滤器值来进一步扩展它,但这可能会让事情变得复杂:

过滤器:

Filter_ID description value
1         brand       1

FILTER_VALUE:

Filter_ID value
1         Bosch
2         Bahco