我正在开发一个类似于 Quickr.com 的分类网站。
主要问题是每个类别都需要一组不同的属性。例如,对于手机,属性可能是制造商、操作系统、是否是触摸屏、是否启用 3G 等……而对于公寓,属性是卧室数量、家具、楼层、总面积等。属性和属性的数量因每个类别而异,我将属性及其值保存在单独的表中。
我当前的数据库结构是
表分类广告
此表存储所有广告。每个广告一条记录。
ad_id
ad_title
ad_desc
ad_created_on
cat_id
样本数据
-----------------------------------------------------------------------------------------------
|ad_id | ad_title | ad_desc | ad_created_on | cat_id |
-----------------------------------------------------------------------------------------------
|1 | Nokia Phone | Nokia n97 phone for sale. Excellent condition | <timestamp> | 2 |
-----------------------------------------------------------------------------------------------
表分类s_cat
此表存储所有可用的类别。classes_ads 表中的 cat_id 与该表中的 cat_id 相关。
cat_id
类别
parent_cid
样本数据
-------------------------------------------
|cat_id| category | parent_cid |
-------------------------------------------
|1 | Electronics | NULL |
|2 | Mobile Phone | 1 |
|3 | Apartments | NULL |
|4 | Apartments - Sale | 3 |
-------------------------------------------
表分类_attribute
此表包含特定类别的所有可用属性。与分类s_cat 表有关。
attr_id
cat_id
input_type
attr_label
attr_name
样本数据
-----------------------------------------------------------
|attr_id | cat_id | attr_label | attr_name |
-----------------------------------------------------------
|1 | 2 | Operating System | Operating_System |
|2 | 2 | Is Touch Screen | Touch_Screen |
|3 | 2 | Manufacturer | Manufacturer |
|4 | 3 | Bedrooms | Bedrooms |
|5 | 3 | Total Area | Area |
|6 | 3 | Posted By | Posted_By |
-----------------------------------------------------------
表分类s_attr_value
该表将每个广告的属性值存储在分类广告表中。
attr_val_id attr_id ad_id attr_val
样本数据
---------------------------------------------
|attr_val_id | attr_id | ad_id | attr_val |
---------------------------------------------
|1 | 1 | 1 | Symbian OS |
|2 | 2 | 1 | 1 |
|3 | 3 | 1 | Nokia |
---------------------------------------------
========
- 这个设计好吗?
- 是否可以用 solr 索引这些数据?
- 如何对此数据执行分面搜索?
- MySQL 是否支持像 solr 一样的字段折叠?