我们为我们的新闻帖子添加标签(我们使用自己的CMS),我想根据单个故事使用的标签来提取5个相关的故事。我们在数据库中有用空格分隔的标记,所以我使用以下代码将这些标记放入一个数组中
$tags = explode(" ", $tags);现在我们有了数组中的标记,我想使用它们从数据库中提取相关的故事。
foreach($tags as $t) {
$pullRelated = mysql_query("SELECT * FROM `posts` WHERE `tags` LIKE '%$t%' AND `newsID` != '$newsID' LIMIT 5");这样做的问题是,如果有3个标签,它将显示15个相关故事(每个标签5个)。我想要的是,如果有2,3,4或5个标签,显示来自所有标签的故事的混合,但仍然只显示5个故事。
建议?
发布于 2010-10-15 02:00:58
因此,您将标记(关键字、类别)作为以空格分隔的字符串保存在posts表中。
好吧,除了你需要标准化你的设计之外,没有什么可以说的,这将减轻你的所有问题,并使你的应用程序显着更有效地判断你到目前为止所展示的内容。
下面这些内容应该足够了:
Rewriting mysql select to reduce time and writing tmp to disk
https://stackoverflow.com/questions/3936050
复制相似问题