如何实现动态分类/搜索过滤器

时间:2011-08-03 23:12:33

标签: asp.net sql database search search-engine

我正在建立一个网站,我需要有动态类别,如ebay搜索过滤器。能否请您指出正确的方向并向我发送一些有用的链接或想法。

在ebay中,始终根据产品数据生成左侧的搜索过滤器。

任何想法如何实现?

非常感谢。

1 个答案:

答案 0 :(得分:0)

这是最简单的方法之一:您需要先标记您的产品。标记本质上是分类,但重要的是您可以将产品分为多个类别(或标记)。

现在搜索产品时,你必须触发相应的标签查询 - 例如,假设有三个简单的表:product_master,tag_master和product_tag(many_to_many relationship),一个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子句。

您可以扩展查询以支持标记(或类别)中的层次结构。