如何使用SQL Server为我的ASP.NET网站提供精简搜索

时间:2012-07-06 08:15:20

标签: asp.net sql-server search

我们正在使用ASP.NET和SQL Server开发一个网站。我们希望提供精简搜索,基本上过滤我们针对一个或多个特定条件的搜索结果。我们想要显示所有精炼搜索字段和计数(类似于亚马逊网站,其中几个字段显示在搜索结果的左侧,带有计数)

像是一样的东西 按价格
50至100(10)
100至500(50)......

按发布日期
7天内(40)
15天内(90)
30天内(150)

依旧......

我们使用多个搜索条件进行常规搜索。我们正在使用SQL Server,并且存储过程使用分页技术和每页结果数。

因此,当您回答时,请考虑此信息并提供可用的示例链接。

非常感谢。

1 个答案:

答案 0 :(得分:1)

这只能通过在sql server过程和代码中进行少量修改来完成。

将所有精炼元素作为变量保存到存储过程中。 将精炼参数的值传递给sql server,例如: 如果price是精炼属性,则将2变量@min_price和@max_price传递给存储过程,并在分页和排序发生之前包含在语句的位置。
修改:
你的意思是你需要条件参数。 在这种情况下使用ISNULL () 例如:您需要特定价格范围内的产品和具有特定类别的产品名称,即手机,电子产品。现在,如果此Category参数为null,那么我们需要避免比较。在那种情况下:

SELECT * 
FROM Products p
WHERE 
p.Price BETWEEN @min_price AND @max_price
AND
p.Category = ISNULL(@category, p.Category)

现在在这种情况下,如果@category参数为null,则它将替换与Category本身的比较,即Mobile = Mobile将返回true。

如果要形成的查询过于复杂,那么动态SQL查询是唯一的出路。但是试着避免这些因为没有为这些保存执行计划,因此会有性能损失。