mysql-存储标签和搜索精确标签的最佳方法

laximzn5  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(344)

这个问题在这里已经有答案了

在数据库列中存储分隔列表真的那么糟糕吗(10个答案)
两年前关门了。
我有问题与mysql搜索标签正确。
目前我正在存储这样的标签-

id  |   name   |           tags
======+==========+============================
  1   | Pen      | pen, pencil, writings, edit
------+----------+----------------------------
  2   | Money    | currency, penny, dollar
------+----------+----------------------------
  3   | Car      | suspension, fast
------+----------+----------------------------

目前,我正在使用此代码以id 1名称笔为目标(记录1)

SELECT * FROM ____ WHERE tags LIKE '%pen%'

但我得到这三张唱片是因为-
钢笔、铅笔、文字、编辑
货币,便士,美元
悬架,快速
我只想要记录1,当我搜索关键字笔

vshtjzan

vshtjzan1#

如上所述,不要将所有标记存储在一个列中,而是将其规范化。例如,您应该有实体表(包含pen、car等)、标记表(pen、pencil、penny等)和关系表,它们将在索引中的两列中包含来自两个表的id。
在当前架构中,可以从以下位置更改搜索条件: LIKE '%pen%' to = 'pen' OR LIKE 'pen, %' OR LIKE '% pen, %' OR LIKE '% pen' .
但你知道,这是一个丑陋的解决方案。。。。

相关问题