我试图弄清楚如何使用mysql&找到相关的主题项目php,这是我的主题表
topics{id, topic, founder,vote_up, vote_down date}
例如,我说我在php
topic {3,php,getaway, 6, 8, 20.06.2009 ect]
我如何找到该主题的所有相关主题
答案 0 :(得分:1)
这取决于你对相关的定义。一种方法是进行全文搜索,查找主题标题,并使用mysql's functions或更好,Sphinx或Lucene显示最佳结果。
答案 1 :(得分:1)
您需要定义适用于您的域的相对性。一种天真的方式是将相关主题的标题标记为单词(在本例中为“php”)并进行全文搜索以查找具有类似文章的其他主题。然后结合并呈现。
答案 2 :(得分:1)
我经常在MySQL中使用REGEXP搜索进行通配符搜索。但对于听起来像是一个提供相关项目的相当复杂的系统来说,它肯定不是一个神奇的子弹。
通常,为了进行比较,在数据库中构建了分类系统。由于计算机不是魔术,因此需要提供信息进行比较。在这种情况下,您可以定义类别或关键字,然后使用查询来显示包含这些关键字或类别定义的项目。然后挑战变成了如何种下这些类别?
答案 3 :(得分:1)
我不知道为什么我不能评论其他人的答案所以请原谅这个“答案”
“我忘了添加每个主题,有一些关于它们的生物,就像关于段落说出主题是什么的200个字符,这是将内容相互关联的好方法吗?”
这是一种非常不可靠的关联方式。如果是这种情况,几乎每件事都会有关系,因为每个主题都会出现常见的单词。像“the”或“and”这样的词会将所有内容都与全文搜索相关联,具体取决于您如何协调比较。
在您的情况下,您可能想澄清您计划比较的方式。你已经提到过你正在使用php和mysql,所以我们都假设你正在编写一个查询来查找关系。 为什么你要避开关系表?关键字表?这是基本的Web开发,看起来非常奇怪,你会对一个非常简单的概念的复杂工作感兴趣。
博客{id,title body,date} 主题{id,title} blog_topic {id,blog_id,topic_id}
$sql = "SELECT b.*, t.* FROM `blogs` b LEFT JOIN `blog_topic` r ON r.`blog_id` = b.`id` LEFT JOIN `topic` t ON t.`id` = r.`topic_id` WHERE t.`id` = ".$whatever_topic_id_you_pass;
对我来说似乎很简单。比一些奇怪的全文搜索更可靠。