程序员人生 网站导航

让PHP168的搜索可以支持多个关键字

栏目:DedeCMS时间:2014-04-03 03:19:11

  网(LieHuo.Net)教程 php168 V6的搜索功能不强,仅支持一个关键词,用户输多个关键词搜索结果就为空,难于实现精确搜索。于是对整站搜索进行了一些修改,使它可以支持多个关键字的搜索,只要用空格把关键词隔开就行。

  修改文件:/do/search.php

以下为引用的内容:
 
//增强处理:如关键词用空格分开,处理成多个关键词 kevin 2009-09-12
 unset($detail,$detail_plus,$keyword_plus);
 $detail=explode(" ",$keyword);
 foreach( $detail AS $value){
  if($type=='keyword')
  {
   $detail_plus[]=" A.keywords='$value' ";
  } 
  elseif($type=='title')
  {
   $detail_plus[]=" A.title like '%$value%' ";
  }
  elseif($type=='content')
  {
   $detail_plus[]=" B.content LIKE '%$value%' ";
  }
 }
 $keyword_plus=implode(" AND ",$detail_plus);
 unset($detail,$detail_plus);
 //后面搜索的条件相应进行了修改。
 
 //增强处理结束。

  将以上代码插入在 $SQL=" A.yz=1 "; 后面,然后再按下面的代码修改相应的查询条件。

以下为引用的内容:
$query = $db->query("SELECT B.aid FROM {$pre}keywordid B LEFT JOIN {$pre}keyword A ON A.id=B.id WHERE $keyword_plus ");

以下为引用的内容:
elseif($type=='title')
{
$SQL.=" AND BINARY $keyword_plus ";
}
elseif($type=='id')
{
$SQL.=" AND A.aid = '$keyword' ";
}
elseif($type=='username')
{
$SQL.=" AND BINARY A.username = '$keyword' ";
}
elseif($type=='content')
{
$SQL.=" AND BINARY $keyword_plus ";
}

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐