我正在一个有用户和用户生成的文章,画廊和视频的网站上工作。我正在尝试制作一个标记系统并搜索它们。哪个搜索/标签系统更好?
起初我在考虑tbl_articles,tbl_galleries和tbl_videos我会有一个标题,描述和标签字段。然后运行像每个以下查询:为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
相同的查询。用户只需比较用户名即可。然后用“更多”按钮(脸谱风格)在结果页面上显示三个。
当查看文章,图库或视频时,也会有链接到相关内容,所以我只想在LIMIT设置为'1,3'时使用相同的查询 - 以避免出现。
Q1 - 该系统如何?
我很高兴与系统,直到我发现this
在他们有
- 一个“标签”表包含两个 列的主ID和一个独特的 索引TAG_NAME。
- 一个“类型”表,他们有 另一主ID和一个独特的 索引“类型”(类别)(我想 我可以用它来 用户/视频/条/画廊)
- 一个'搜索“表中包含 文章的网址,其中来自'tags'和'type'的外部ID为 。 (我想 ,而不是一个完整的URL我可以 店国外相关ID,以便 我可以生成URL如 article.php ID = ....?)
Q2 - 这系统看起来效率更高......虽然我如何搜索标题或描述?
Q3 - 另一个坏事是每个页面视图我都必须加入标签..所以它可能不是那么高效。
Q4 - 我的系统也只搜索布尔值,我会更喜欢'喜欢'查询吗?我只是鼓励单词(stackoverflow样式)...我意识到尽管在我的系统中搜索'火车站'不会匹配像'火车站'我怎么解决这个问题?
很多问题......很抱歉,它太长了。谢谢。
谢谢你的回答。还有一个问题......你在哪里推荐我把标题和描述放在他们的原始表格中? – Mark 2010-01-14 09:40:44
看来他们使用tag_target_name和tag_target_url来构建链接到标记的内容。您可以将标题和描述放在他们的位置,但更好的解决方案是将所有信息放在单独的“articles”表中,并将articles表中的行的id存储到tag_targets表中。这样你就不会重复每篇文章中每个标签的标题和描述。 – 2010-01-14 14:46:55