日期:2014-05-18  浏览次数:20619 次

.net相关新闻--数据库问题
各位高手,小弟遇到问题了,就是一个新闻网的相关新闻,

我有一条新闻表news 它有,title,time,keyword

现在有一条新闻,它的keyword是:中国,崛起,世界,强大

我要根据上面的4个关键词就查询相关新闻,而且要根据这些关键词出现的次数排序

比如说:有2条新闻他们的关键词分别是:中国,澳大利亚,弱小(关键词存在一次)

还有一条是:中国,崛起,西班牙,失败(关键词出现2次)

那么就要返回第二个新闻。。。明白吧?我的相关新闻一共要查询5条,数据库大概有几十万条数据吧!!!跪求。

------解决方案--------------------
可以考虑关键字分开查询 再累加起来看看是这个意思吗?
------解决方案--------------------
用SQL语句求某文章中出现关键词的个数--【叶子】

SQL code
--按照这个排序即可  
select top 1 * from tablename order by 个数 desc

------解决方案--------------------
最好是在程序用数组来做 或者是用叶子 因为sql里要用切割字符然后在比较

SQL code
SET @keyword_One ='考试'

SET @keyword_Two ='考纪' 

SET @keyword_Three='考风' 

--查看关键词的个数

DECLARE @article varchar(4000),

@keyword_One varchar(300), 

@keyword_Two varchar(300),

@keyword_Three varchar(300) 

--文章内容

SET @article ='2008年普通高校招生全国统一考试将于月、日举行,山东、上海、江苏、广东、海南等省市因考试科目设置不同,考试时间延长到日结束。四川省灾区的六市州个县(市、区)和甘肃省灾区的两市州的个县(市、区)延期举行高考,延期高考的时间将在正常高考结束后及时向社会公布。今年高考是在全国人民万众一心抗震救灾当中进行的,切实做好今年高考有关工作具有特殊意义。国务院领导高度重视,多次指示要求有关部门密切配合,通力合作,确保今年高考万无一失。教育部、公安部等部委和各地相关部门均采取了一系列措施,进一步加强了今年高考的各项具体工作。

 

这些措施包括一是采取严厉措施维护考风考纪,严厉打击无线设备考试作弊。为了维护良好的考风考纪和考试公正,今年各地继续组织考生签定“诚信高考协议书”,并开展以“诚实守信”为主题的教育活动,同时将加大对作弊、替考等违规行为的处罚力度:对在今年高考中有严重违规行为(如利用通讯工具作弊、替考等)的考生,将取消其当年全国统考各科成绩,同时下一年度不得报名参加全国统考;高中在校非应届毕业生参加高考,不仅取消其当年各科成绩还将给予其应届毕业当年不得报名参加全国统考的处理;在校大学生参与替考,取消其当年全国统考各科成绩,并由其所在高校按照普通高校学生管理规定严肃处理,情节严重的给予开除学籍处分;对虚报、隐瞒或伪造、涂改有关材料及其他欺诈手段,或者因招生工作人员或其他人员的徇私舞弊行为取得考试资格或录取资格的考生,取消其当年的考试资格或录取资格。


select 

( LEN( @article ) - LEN( replace( @article, @keyword_One,'' ) ) ) / LEN( @keyword_One ) AS 考试出现的次数,

( LEN( @article ) - LEN( replace( @article, @keyword_Two,'' ) ) ) / LEN( @keyword_Two ) AS 考纪出现的次数,

( LEN( @article ) - LEN( replace( @article, @keyword_Three,'' ) ) ) / LEN( @keyword_Three ) AS 考风出现的次数