【发布时间】:2012-03-02 21:06:44
【问题描述】:
我对 autoscout24.de 中搜索引擎的实现很感兴趣。这是一个您可以出售/购买汽车的平台。每个汽车广告都有可供搜索的属性:品牌、价格、公里数、颜色等(总共超过 50 种不同的属性)。
我对像这样工作的详细搜索特别感兴趣:每个可能的属性都显示在页面上。如果选择了该属性,则每个属性后面的括号中会显示与新搜索匹配的汽车数量。
示例:我将从空搜索条件开始。
物业品牌:
- 宝马 (100.000)
- 大众汽车 (200.000)
- 福特 (150.000)
- ...
属性颜色:
- 黑色 (210.000)
- 银 (50.000)
- 白色 (100.000)
- ...
其他属性以此类推。
我想知道:
- 您将如何使用 SQL 实现这种搜索?
- 您将如何使用内存数据结构来实现它?
- 还应支持范围查询(价格从 X 到 Y 的所有汽车)
更新:
括号中的数字显示添加搜索条件后的结果数量。所以每次添加/删除属性时它都会改变......
所以一个简单的算法会像这样工作:
- 找到所有符合当前搜索条件的汽车(例如制造福特)
- 对于每个属性,请执行以下操作:查找与先前搜索条件(“福特”)和所选属性的搜索条件相匹配的所有汽车。将计数写在属性后面的括号中。
这个算法很幼稚,因为它会执行 1 + N 个查询 (N=#properties)。没有人愿意这样做;-)
【问题讨论】:
-
您可以访问本网站的数据库吗?如果没有,您是否打算从网站上刮掉那 大量 的数据?他们提供 API 吗?这是一个假设性问题吗?
-
@elusive:我无权访问该网站的数据库。而且我不想抓取数据。我想建立一个类似的数据库,但数据不同(没有汽车)。
标签: sql database-design data-structures