【发布时间】:2011-01-04 16:58:09
【问题描述】:
我正在开发一个拥有用户和用户生成的文章、画廊和视频的网站。我正在尝试制作一个标记系统并搜索它们。
起初我想在 tbl_articles、tbl_galleries 和 tbl_videos 中我会有一个标题、描述和一个标签字段。然后为每个运行如下查询:
select * from tbl_articles where match(title, description, tags)
against ('$search' in boolean mode) ORDER BY match(title, description, tags)
against ('$search' in boolean mode) DESC, views desc LIMIT 0, 3
tbl_galleries 和 tbl_videos 的查询相同。对于用户,只需比较用户名。然后在结果页面上显示三个,并带有一个“更多”按钮(facebook 样式)。
在查看文章、图库或视频时,也会有相关内容的链接,因此我考虑使用相同的查询,仅将 LIMIT 设置为“1,3” - 以避免显示自身。
Q1 - 这个系统怎么样?
我对系统很满意,直到找到this
他们在其中拥有
- 一个“标签”表,其中包含两个 列一个主 ID 和一个唯一的 已编入索引的 tag_name。
- 他们拥有的“类型”表 另一个主 ID 和唯一 索引“类型”(类别)(我认为 我可以用它 用户/视频/文章/图库)
- 一个“搜索”表,其中包含 带有外国ID的文章的网址 来自“标签”和“类型”。 (我想 而不是一个完整的网址,我可以 存储相关的外国ID,以便 我可以生成网址,例如 article.php?id=....)
Q2 - 这个系统似乎效率更高...虽然我将如何搜索标题或描述?
Q3 - 另一个不好的事情是对于每个页面视图我都必须加入标签。所以它可能不会那么有效。
Q4 - 我的系统也只搜索布尔值,使用“like”查询会更好吗?
Q5 - 我将用户限制为 4 个标签,但我鼓励使用单个单词(stackoverflow 风格)...我意识到虽然在我的系统中搜索“火车站”不匹配像“火车站”这样的标签我该如何解决这个问题?
这么多问题......抱歉,它太长了。谢谢你。
【问题讨论】: