说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

求一思路,请各位赐教

编辑:说三道四文库 发布时间:2018-08-18 04:49
HTML文档下载 WORD文档下载 PDF文档下载
小弟做一新闻系统,每篇新闻都有一个或多个关键词,以数组的形式储存在数据库里面的。在新闻显示的时候要显示“相关新闻”,就是关键词相同的新闻,要怎么做才能做到既把相关的新闻读出来又不读取重复的呢?
百思不得其解,望各位帮忙帮忙
有哪位知道吗?自己顶一下
不知道你是如何“以数组的形式储存在数据库里面的”?
不过既然是数组,那么就可以用array_merge把数组合并在一起,用array_unique去掉数组中的重复元素
是这样的,我是把关键字以空格隔开,储存在一个字段里面,用的时候拿出来,用explode变成数组,所以我说是以数组形式储存在数据库里面,说错了,请问老大,有什么思路可以指点一下我吗?
高人帮忙啊
帮你D一下
谢谢帮顶,期望xuzuning大哥出来帮忙啊
我上面已经说过了
恩,我看了您上面说的,但是应该怎么读取数据啊,去掉数组中的重复元素,但是还是有可能出现这种情况:
现在显示的这个新闻有三个关键字,另外一条新闻也有三个关键字,其中有两个和现在这条新闻相同,那后面这条新闻还是会被显示两次啊
我觉得每篇文章储存一个关键字(about),然后显示一篇文章的时候:
select * from article where about(关键字字段) like 这篇文章的关键字 limit n

这样不就可以了吗?
但是一个关键字就是不够啊,要多几个关键字,这也是别人要求这样做的
无论关键字有多少,id是不重复的,你把不同关键字的新闻放到不同的数组
过滤重复的id就足够了,以关键字来过滤数组是比较笨的办法
关键字是用来select的,不是key,id才是key
关键字这么存key1|key2|key3....
搜索的时侯只要like就可以了。怎么会重复呢??
1|2|3 和1|2|4 怎么 like?
ft~``
select * from article where ('1' like '%1 2 4%' or '2' like '%1 2 4%' or '3' like '%1 2 4 %')
这样不可以吗?当然上面的1 2 4是字段名,不可能在SQL里面写死的~``
<?
select distinct * from news where (key like 1) or (key like 2) or (key like 3)limit 0,5
?>
行不?


“恩,我看了您上面说的,但是应该怎么读取数据啊,去掉数组中的重复元素,但是还是有可能出现这种情况:
现在显示的这个新闻有三个关键字,另外一条新闻也有三个关键字,其中有两个和现在这条新闻相同,那后面这条新闻还是会被显示两次啊”

怎么可能呢?
你是怎样写的?
问题终于解决了,谢谢各位,结帖了。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘