Php 哪种搜索/标记系统更好?
我在一个网站上工作,有用户和用户生成的文章,画廊和视频的。我正在尝试建立一个标签系统,并对它们进行搜索 起初,我想在tbl_文章、tbl_画廊和tbl_视频中,我会有一个标题、描述和标签字段。然后对每个对象运行如下查询:Php 哪种搜索/标记系统更好?,php,mysql,search,tags,Php,Mysql,Search,Tags,我在一个网站上工作,有用户和用户生成的文章,画廊和视频的。我正在尝试建立一个标签系统,并对它们进行搜索 起初,我想在tbl_文章、tbl_画廊和tbl_视频中,我会有一个标题、描述和标签字段。然后对每个对象运行如下查询: select * from tbl_articles where match(title, description, tags) against ('$search' in boolean mode) ORDER BY match(title, description, t
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_图库和tbl_视频进行相同的查询。对于用户,只需比较用户名。然后用“更多”按钮(facebook风格)在结果页面上显示其中三个
当观看一篇文章、画廊或视频时,也会有相关内容的链接,因此我考虑只使用限制设置为“1,3”的相同查询,以避免显示自己
Q1-这个系统怎么样
我对这个系统很满意,直到我发现
他们在其中
- 包含两个标签的“标签”表 列包含一个主id和一个唯一的 索引标记名称
- 一个“类型”表,它们具有 另一个主id和唯一的 索引的“类型”(类别)(我想 我可以用它来 用户/视频/文章/图库)
- 包含以下内容的“搜索”表: 具有外部id的文章的url 来自“标记”和“类型”。(我想 而不是一个完整的网址,我可以 存储相关的外部id,以便 我可以生成url,例如 article.php?id=…)
这么多问题。。。对不起,时间太长了。多谢各位 Q1-最好使用三个单独的表来存放文章、标签,以及一个与文章和标签相关的链接表。您还可以使用两个文章表和一个文章标签表来完成此操作。articles_tags表将包含articleID字段和标记本身作为复合键。两个或三个表都可以很容易地找到哪些文章具有给定的标记,以及哪些标记分配给给定的文章 Q2-标题和描述搜索可以使用带有百分比的“like”或正则表达式或全文搜索来完成 Q3-不要担心将标记表与其他表连接在一起。要解释Knuth,首先构建它,然后找到瓶颈。MySQL非常擅长它所做的事情。把这些桌子一次又一次地连在一起不会有什么坏处 问题4——这取决于你想从结果中得到什么。通常,您需要实际数据,然后只需测试返回的行数,就可以知道返回的行数是真是假 问题5——同样,在将查询传递到数据库之前,您必须使用“like”语法,可能还需要在PHP端使用一些创造性的正则表达式
祝你好运 谢谢你的回答。还有一个问题。。。您建议我将标题和描述放在哪里?在他们的原始表格中?他们似乎正在使用tag_target_name和tag_target_url构建指向标记内容的链接。您可以将标题和描述放在适当的位置,但更好的解决方案是将所有这些信息放在一个单独的“articles”表中,并将articles表中的行的id存储到tag_targets表中。这样你就不会重复每篇文章中每个标签的标题和描述。