gpt4 book ai didi

sql - 搜索此产品数据库的最佳方式是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:33 24 4
gpt4 key购买 nike

我在一家电子商务公司工作,我们最近推出了一个新网站。我负责创建搜索算法。

我们正在使用 SQL Server 数据库。我们使用“标签”将产品与某些产品关键字相关联。我不想使用我们的任何实际信息,因此我将用其他名称替换实际数据。

有一个 Product 表、一个 Tags 表和一个将产品与标签相关联的 ProductTags 表。一个标签 可以有很多产品,反之亦然。

Tag 表有:

int TagId
varchar TagName

Product 表有:

Name
ProductId
Price

ProductTags 有:

TagId
ProductId
TagName
ProductName

现在我正在拆分查询中空格的搜索查询,并找到适用于每个字符串的所有“标签”。

示例查询如下所示:“Red fish M60”。

在拆分查询中的空格后,我从查询中的每个字符串中得到一个标签列表。以下均为'Tag's。

字符串 Red 返回:

[Red]

鱼会回来:

[Fish_Male]
[Fish_Female]
[Fish_North_America]

和 M60 返回:

[M60_connection]
[M60_secure]

并且该搜索的热门匹配项可能是一些名称如下的产品

'Red Male Fish Secure'
'Red Female Fish Secure'
'Red Male fish North america connection'

然后在这些下面是不太相关的产品,例如

'red male fish farmed'
'black female fish secure'

然后在下面是只匹配一个标签的不太相关的结果,比如

'red crab'

'black male fish'

希望对您有所帮助。

所以我的问题是,什么是最好的(最快、最有效的?)让我浏览这些标签并在顶部返回最相关的产品,同时又不遗漏任何产品的方法。

我是否可以对这些标签进行所有可能的排列并返回每个排列的产品? (似乎很多)以及为每个人标签退回产品,就像最后一样。

例如,匹配三个“标签”的产品将位于搜索结果的顶部,而仅匹配一个“标签”的产品将位于搜索结果的底部。用户将能够搜索任意 n 个标签,因为有相当多的可用标签。我放下的只是一个简单的例子。如果有什么不合理的地方,请告诉我。

谢谢

最佳答案

这是一个开始。但我不知道仅根据标签命中数进行匹配是否足以满足您的排序需求。

select p.ProductId, count(*) as Relevance
from Product as p inner join ProductTags as pt on pt.ProductId = p.ProductId
where pt.TagId in (
select TagId from Tags where TagName in (...)
)
group by p.ProductId
order by Relevance desc

顺便说一句,将 ProductName 和 TagName 放入 ProductTags 表中并未规范化。

关于sql - 搜索此产品数据库的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28946812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com