我有一个应用程序,我将访问 SQL 服务器以返回已通过应用程序中的选择过滤的数据,作为任何常见的多面搜索。我确实看到了一些开箱即用的解决方案,但这些都很昂贵,我更喜欢定制一些东西,但不知道从哪里开始。
数据库结构是这样的:
PRODUCT 表中的数据将通过 TAG 表中的标签进行搜索。可以在 TAG 表中找到的值是这样的:
ID NAME
----------------------
1 Blue
2 Green
3 Small
4 Large
5 Red
它们将通过 ProductTag 表与产品相关。
我需要从此设置中返回两组数据:
- 仅与所选标签相关的产品,无论是单个还是多个
- 对于已经通过单个或多个选定标签精炼的产品,还可以选择剩余标签。
如果可能的话,我希望这一切都在 SQL 服务器中,2 个单独作为存储过程。
如今,大多数网站都内置了此功能,即:http ://www.gnc.com/family/index.jsp?categoryId=2108294&cp=3593186.3593187 (他们称其为“Narrow By”)
我一直在寻找如何做到这一点,我猜测如果必须以这种性质创建存储过程,则需要有 1 个接受 CSV 值的参数,如下所示:
[dbo].[GetFacetedProducts] @Tags_Selected = '1,3,5'
[dbo].[GetFacetedTags] @Tags_Selected = '1,3,5'
那么对于这种架构,是否有人知道需要为这些存储过程编写哪些类型的查询,或者该架构是否存在任何缺陷?在此之前有没有人创建过多面搜索?如果是这样,需要什么类型的查询来做这样的事情?我想我只是难以理解它,而且没有太多东西可以向人们展示如何制作这样的东西。