cms
当前位置:首页->使用帮助
DedeCMS V5.6整合站内搜索引擎
  • 作者:本站
  • 日期:2010-04-27
  • 出处:totcms
  • 点击:708

1、首先安装站内搜索引擎,下载地址:/html/201004-25/20100425102129.htm

说明:本例以DedeCMS V5.6为演示说明,其它版本可能略有差别。

    站内搜索引擎提供了数据索引接口,因此我们可以在管理员使用DedeCms添加数据后,同步将数据POST至站内搜索引擎索引接口,从而完成数据的同步索引。

    打开DedeCMS后台管理文件夹下的article_add.php,找到第246行的:ClearMyAddon($arcID, $title); 在其后面回车换行增加以下代码:

 //索引添加开始
function posttohost($url, $data) {
 $url = parse_url($url);
 if (!$url) return "couldn’t parse url";
 if (!isset($url['port'])) { $url['port'] = ""; }
 if (!isset($url['query'])) { $url['query'] = ""; }

 $encoded = "";

 while (list($k,$v) = each($data)) {
  $encoded .= ($encoded ? "&" : "");
  $encoded .= rawurlencode($k)."=".rawurlencode($v);
 }

 $fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80);
 if (!$fp) return "Failed to open socket to $url[host]";

 fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? "?" : "", $url['query']));
 fputs($fp, "Host: $url[host]\n");
 fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
 fputs($fp, "Content-length: " . strlen($encoded) . "\n");
 fputs($fp, "Connection: close\n\n");

 fputs($fp, "$encoded\n");

 $line = fgets($fp,1024);
 if (!eregi("^HTTP/1\.. 200", $line)) return;

 $results = ""; $inheader = 1;
 while(!feof($fp)) {
  $line = fgets($fp,1024);
  if ($inheader && ($line == "\n" || $line == "\r\n")) {
   $inheader = 0;
  }
  elseif (!$inheader) {
   $results .= $line;
  }
 }
 fclose($fp);

 return $results;
}
//索引接口参数
$SearchPortal="http://www.test.com/TotIndex.aspx";//搜索引擎索引接口地址
$IndexKey="totsearchengine01";//接口访问key,请通过搜索引擎中的web.config查找
//添加索引
$arrVal["key"] = $IndexKey;
$arrVal["action"] = "insert";
$arrVal["id"] = $arcID;
$arrVal["Title"] = mb_convert_encoding($title, 'utf-8', 'gb2312');
$arrVal["Content"] = mb_convert_encoding($body, 'utf-8', 'gb2312');
$arrVal["Categoryid"] = 0;
$arrVal["Summary"] = mb_convert_encoding($body, 'utf-8', 'gb2312');
$arrVal["Photo"] = "";
$arrVal["ModDate"] = date('Y-m-d g:i:s');
$arrVal["LinkUrl"] = $cfg_basehost.$artUrl;
$strTemp = posttohost($SearchPortal, $arrVal);
print_r(mb_convert_encoding($strTemp, 'gb2312', 'utf-8'));
//索引添加结束

经过以上修改后,再次添加文章,将出现以下提示:

打开站内搜索引擎网址:

可以看到数据已经可以查询到了。