我正在努力创建一个系统,允许用户上传项目并为其添加“标记”,以帮助他们在搜索中显示。目前,我有一个像这样工作的数据库:
id|title|tags
其中tags
是用户自己输入的以逗号分隔的标记列表。我已经读到这是一种可怕的方法,但是有一个标签表并将每个ID与项目记录一起存储基本上是相同的。
我如何运行搜索以首先返回最相关的结果?我现在正在使用它,它可以工作,但不按相关性排序:SELECT * FROM items WHERE tags LIKE '%$tag%' LIMIT 0,20";
其中$tag
只是一个标记,没有逗号(它在循环中)。
答案 0 :(得分:6)
having a tags table and storing each ID along with the item record is basically the same thing
NO。没有。没有。这绝对不是一回事。
您使用“逗号分隔列出的”版本,并尝试提出查询以解决这些问题:
使用正确规范化的表:
使用您的版本:
看到区别?