【发布时间】:2011-10-19 13:12:15
【问题描述】:
我正在构建一个需要动态类别的网站,例如 ebay 搜索过滤器。能否请您指出正确的方向并向我发送一些有用的链接或想法。
在 ebay 中,左侧的搜索过滤器始终根据产品数据生成。
有什么想法可以实现吗?
非常感谢。
【问题讨论】:
标签: asp.net sql database search search-engine
我正在构建一个需要动态类别的网站,例如 ebay 搜索过滤器。能否请您指出正确的方向并向我发送一些有用的链接或想法。
在 ebay 中,左侧的搜索过滤器始终根据产品数据生成。
有什么想法可以实现吗?
非常感谢。
【问题讨论】:
标签: asp.net sql database search search-engine
这是最简单的方法之一:您需要首先标记您的产品。标记本质上是分类,但重要的是您可以将产品分为多个类别(或标签)。
现在,当搜索产品时,您必须触发相应的标签查询 - 例如,假设三个简单的表:product_master、tag_master 和 product_tag(many_to_many 关系),一个 MS Sql 查询就可以解决问题
select
t.tag_name,
count distinct (pt.product_id)
from
tag_master t
inner join product_tag pt
on t.tag_id = pt.tag_id
inner join product p
on pt.product_id = p.product_id
Where
p.name like '%search_term%'
group by
t.tag_name
基本上,对于非常产品搜索,您需要触发此类查询。通常,您会匹配数千个标签,因此在进一步分页搜索时缓存查询结果。按标签/类别向下钻取将简单地添加到 where 子句。
您可以扩展查询以支持标签(或类别)中的层次结构。
【讨论】: