多个关键词排序,多关键词站内搜索怎么做
多个关键词排序,多关键词站内搜索怎么做? 我们做网页时。某一个页面有多个关键词。要搜索相关的文章时怎么办?
多个关键词排序,多关键词站内搜索怎么做?我们做网页时。某一个页面有多个关键词。要搜索相关的文章时怎么办?
PHP搜索主要通过使用SQL语句中的like子句来实现。如果同时搜索多个关键词,可以使用union子句来将搜索结果合并起来。
搜索效果如下
/http://www.hbyifu.com/article_26479.html
模板:article/article.html
<!--代码如下-->
{if($article['tags'])}
<?php
$tags = explode(',',$article['tags']);
$sql = [];
foreach($tags as $v){
$sql[]=" title like '%".$v."%' ";
$sql[]=" keywords like '%".$v."%' ";
}
$tagslist = syDB('article')->findAll(implode(' or ',$sql),null,null,12);
?>
{foreach $tagslist as $v}
<?php
$v['url'] = html_url('article',$v);
?>
<li><a title="{$v['title']}" href=" 'url']}">{fun newstr($v['title'],38)} <span>阅读:{$v['hits']} </span></ a></li>
{/foreach}
{/if}
//分解用户输入的多个关键词,存入$result数组
$result = explode('','',$_GET['key']);
$mysql_server="localhost";
$mysql_username="数据库用户名";
$mysql_password="数据库密码";
$database_conn="数据库名";
//建立数据库链接
$conn = mysql_connect($mysql_server,$mysql_username,$mysql_password);
//选择某个数据库
mysql_select_db($database_conn, $conn);
//根据多个关键词构建SQL语句
$query_rs = "SELECT * FROM (";
//根据每个搜索关键词构建SQL语句
for($i=0;$i<count($result);$i++)
{
//对第一个关键词,不使用UNION
if($i==0)
{
$query_rs .= "SELECT * FROM searchtable WHERE title LIKE ''%$result[0]%''OR content LIKE ''%$result[0]%''";
}else{
//对其他关键词,使用UNION连接
$query_rs .= " UNION SELECT * FROM searchtable WHERE title LIKE''%$result[$i]%'' OR content LIKE ''%$result[$i]%''";
}
//对搜索结果排序
$query_rs .= ") T ORDER BY last_access DESC";
//执行SQL语句
$rs = mysql_query($query_rs, $conn) or die(mysql_error());
$row_rs = mysql_fetch_assoc($rs);
$totalRows_rs = mysql_num_rows($rs);
}
版权所有:重庆安菲科技有限公司
友情链接: