我不得不在其他人的代码中解决一个搜索函数返回太多结果的问题,我注意到它使用了MATCH <,其中LIKE更合适。SQL搜索功能问题,LIKE和MATCH
我不是SQL太好,我已经改变了所有的比赛对LIKE的..
这显然带来了一个错误,我认为它与针对其即时通讯不知道,但可能是仅做与MATCH一起工作..
这是asp代码中的声明。
strSQL = ""
strSQL = "SELECT 'case-studies' AS pagetype, cs.title AS entrytitle, cs.casestudyid AS id, csi.casestudyimageid AS imageid, csi.imagetitle, LIKE (cs.title, cs.content) AGAINST ('" & searchfor & "') AS relevance, LIKE (csi.imagetitle) AGAINST ('" & searchfor & "') AS imagerelevance "
strSQL = strSQL & "FROM casestudies AS cs, casestudiesimages AS csi "
strSQL = strSQL & "WHERE cs.casestudyid = csi.casestudyid AND cs.modestatus = '1' AND ((LIKE(cs.title, cs.content) AGAINST ('" & searchfor & "' IN BOOLEAN MODE)) OR (LIKE(csi.imagetitle) AGAINST ('" & searchfor & "' IN BOOLEAN MODE)) OR (cs.title like '%" & searchfor & "%') OR (cs.content like '%" & searchfor & "%') OR (csi.imagetitle like '%" & searchfor & "%')) "
strSQL = strSQL & "UNION ALL "
strSQL = strSQL & "SELECT 'news' AS pagetype, news.title AS entrytitle, news.newsid AS id, newsimages.newsimageid AS imageid, newsimages.imagetitle, LIKE (news.title, news.content) AGAINST ('" & searchfor & "') AS relevance, LIKE (newsimages.imagetitle) AGAINST ('" & searchfor & "') AS imagerelevance "
strSQL = strSQL & "FROM news, newsimages "
strSQL = strSQL & "WHERE news.newsid = newsimages.newsid AND news.modestatus = '1' AND ((LIKE(news.title, news.content) AGAINST ('" & searchfor & "' IN BOOLEAN MODE)) OR (LIKE(newsimages.imagetitle) AGAINST ('" & searchfor & "' IN BOOLEAN MODE)) OR (news.title like '%" & searchfor & "%') OR (news.content like '%" & searchfor & "%') OR (newsimages.imagetitle like '%" & searchfor & "%')) "
strSQL = strSQL & "GROUP BY id "
strSQL = strSQL & "ORDER BY relevance DESC, imagerelevance DESC "
谁能帮助破译这个代码。它需要搜索像像,而不是搜索“他”和获得“帮助”等
感谢
好的,我明白你的意思了,我所做的只是将MATCH更改为LIKE,所以我认为这一切都是错误的......问题在于我缺乏SQL知识。你可以连续使用多个LIKE吗? –
嗨保罗,是的,你可以在你的发言中有多个LIKE。但是你将永远需要像上面那样定义它。所以然后你添加AND然后像...一样的列名,同样的方式再次:) –