哪个搜索/标签系统更好?

时间:2010-01-13 15:52:38

标签: php mysql search tags

我正在一个拥有用户和用户生成的文章,画廊和视频的网站上工作。我正在尝试建立一个标记系统并搜索它们。

起初我在思考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

他们有

  • 一个'tags'表,其中包含两个 列主要ID和唯一 indexed tag_name。
  • 他们拥有的'类型'表 另一个主要ID和唯一 索引'类型'(类别)(我想 我可以用它 用户/视频/条/库)
  • 包含该搜索的'搜索'表 带有外国身份证的文章的网址 来自'标签'和'类型'。 (我想 而不是一个完整的网址,我可以 存储相关的外国ID以便 我可以生成网址,例如 article.php?ID = ....)

Q2 - 这个系统似乎效率更高......虽然如何搜索标题或说明?

Q3 - 另一个坏处是每个页面视图我都必须加入标签..因此效率可能不会那么高。

Q4 - 我的系统也只搜索布尔值,使用“赞”查询会更好吗?

Q5 - 我将用户限制为4个标签,但我鼓励单字(stackoverflow样式)...我意识到虽然在我的系统中搜索“火车站”不匹配像“火车站”这样的标签如何绕过这个?

这么多问题......对不起它太长了。谢谢。

1 个答案:

答案 0 :(得分:2)

Q1 - 您最好使用三个单独的表格来存放文章,标签以及与文章和标签相关的链接表。您还可以使用两个表格和articles_tags表格来完成它。 articles_tags表将包含articleID字段,标签本身作为复合键。通过两个或三个表格可以轻松找到哪些文章具有给定标记以及哪些标记分配给给定文章。

Q2 - 标题和描述搜索可以使用“喜欢”百分比或正则表达式或全文搜索来完成。

问题3 - 不要担心将标签表与其他人一起加入。要解释Knuth,首先构建它,然后找出瓶颈。 MySQL非常擅长它的功能。一遍又一遍地将这些桌子连在一起不会有害。

第四季 - 这取决于你想要从结果中得到什么。通常你想要实际的数据,然后你可以测试返回的行数,告诉你它是真还是假。

问题5 - 再次,在查询传递到数据库之前,您必须在PHP端使用“like”语法和一些创意正则表达式。

祝你好运!