//将$kw以空格拆分成数组
$kws = explode(' ',$kw); $n = count($kws); $field = 'title'; //要查询的字段名 $sk=''; for($i = 0;$i < $n; $i ++)
{
if($i < ($n-1))
{
$sk .= $field.' like "%'.$kws[$i].'%" or ';
}else{
$sk .= $field.' like "%'.$kws[$i].'%"';
}
}
$sql = "SELECT id,title FROM `ask` WHERE $sk"; $qu = mysql_query($sql) or die(mysql_error()); while($row=mysql_fetch_array($qu))
{
foreach($kws as $kv)
{
$row[title] = preg_replace("/($kv)/","<font color=red><b>\\1</b></font>",$row[title]);
} echo "<p align=\"center\">".$row[title]."<p>";//输出结果是按照查询顺序输出
}
//怎么样才能让结果按照相关度输出呢? 比如说 $kw 是 “企业 文化” 怎么让查询结果中同时包含 “企业 文化”的内容排在最前面,接着是 包含 企业 的内容 最后是 包含文化的内容
from table
where title like '%aaa%'
or title like '%bbb%'
order by (instr(title,'aaa')>0)+(instr(title,'bbb')>0) desc
返回的是什么
$sql = "SELECT * FROM `ask` WHERE MATCH (title) AGAINST ('$kw')"; $qu = mysql_query($sql) or die(mysql_error()); while($row=mysql_fetch_array($qu))
{
echo $row[title]."<br>"; //title字段中有包含 $kw 的行,但是这里没有任何输出。是因为中文的原因吗
}