gpt4 book ai didi

用于搜索目的的关键字到产品映射的数据库设计?

转载 作者:搜寻专家 更新时间:2023-10-30 23:29:29 25 4
gpt4 key购买 nike

我正在尝试构建一个搜索功能,用户可以在其中搜索平台上的产品

案例1:一个产品可以被多个关键字搜索。

情况 2:一个关键字可以映射到多个产品。

这就像产品和关键字之间的多对多关系

当前方法:

    productTable: id(primary key)(int)
name(string)

keywordTable: id(primary key)(int)
name(string)

keywordProductMapping: id(primary key)(int)
product_id #FK productTable (id)
keyword_id #FK keywordTable(id)

问题陈述:如果我有数百万个产品并且一个产品有 20-30 个关键字,那么 keywordProductMapping 将变得太大查询这个表会很慢

任何更好的keywordToProductMapping方法

最佳答案

您的方法是正确的 - 在 SQL 中实现 M:N 的正确方法是使用具有 2 个 FK 的中间表。不过有几点:

  1. 这不会很慢。 Int 列非常小,因此即使是非常长的表也能很好地装入内存并且性能良好。毕竟,对于大多数常见的数据库引擎来说,数千万行是可以接受的。
  2. 去掉 keywordProductMapping 上的 id。这是 M:N 关系中无用的列。 PK 应定义为 product_id,keyword_id。这样 table 会更小。
  3. 不要忘记 FK 上的索引。

另一种选择是使用专门的关键字系统(即 ElasticSearch),它可以在大型集合上表现更好,并允许一些潜在的增长(部分匹配、短语等)

关于用于搜索目的的关键字到产品映射的数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51249400/

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