提问者:小点点

MySQL-存储标记和搜索精确标记的最佳方法[重复]


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%'

但我得到这3张唱片是因为-

  • 钢笔、铅笔、文字、编辑
  • 货币、便士、美元
  • 快速挂起

我只想要记录1,当我搜索关键字pen时


共1个答案

匿名用户

>

  • 如上所述,不要将所有标记存储在单个列中,要将其规范化。例如,您应该有Entity的表(包含Pen,Car等),tags表(Pen,pencil,penny等)和relation表,它们将在索引中的两列中包含两个表的ID。

    在当前架构中,可以从以下内容更改搜索条件:

    喜欢“%pen%”到=“pen”或喜欢“pen,%”或喜欢“%pen,%”或喜欢“%pen,%”或喜欢“%pen”

    但你知道,这是一个丑陋的解决方案...