mysql - 如何通过关键字搜索 MySQL
问题描述
我做了两张桌子
- 对于存储的关键字
- 有文章标题和关键词
在文章表中,我以集合形式存储关键字 id,例如 (1,2,3,6,7)
现在我想通过用户价值的最大出现按关键字和标题进行搜索;
示例:
关键字表 |keyword|id |
| ----- | - |
| 笔| 1 |
| 纸| 2 |
| 铅笔| 3 |
| A4 | 4 |
| 标记| 5 |
文章表
标题关键词
带纸魔法铅笔1,2,4
用户搜索神笔
如何高效搜索?
解决方案
最好的解决方案是使该字段不应包含逗号分隔的所有关键字值,例如1,2,3,4
你应该管理它的多对多表
例如:
- 关键词
- 文章
- keywords_to_articles(id,keyword_id,article_id)
完成此操作后,您的数据库将处于第 3 范式,并且可以通过以下方式轻松执行查询
select a.*
from articles a
join keywords_to_articles ka on ka.article_id = a.id
join keywords k on k.id = ka.keyword_id and k.name = '$keyword'
在这里,我假设您在关键字表中存储在name
字段中。
像上面提到的那样做将是一种有效的方法。
推荐阅读
- php - 如何修复包含动态输入字段的代码?
- reactjs - 单击显示选项按钮时如何在特殊表格行中呈现组件(选项菜单)
- tabulator - 如何在分组数据时禁用项目计数?
- c# - 使用代理时如何从 ComboBox 中获取 SelectedItem?
- ruby-on-rails - 在rails视图模板中编写条件变量的最短方法是什么?
- javascript - 鼠标右键单击并显示上下文菜单时 setTimeout 不起作用
- php - 使用 Imagick 和 Debian 7 勾勒文本
- javascript - 关于 IIFE 工作方式的困惑
- android - 如何删除片段移动到工具栏的动画
- python - 如何在 python 中保存多维张量?