本帖最后由 bqridt 于 2014-4-22 19:44 编辑 效果如下:
实现思路:用现成的scws分词技术+中文转英文特征检索;
优势:不依赖TAG(DZ TAG功能太累赘),匹配度非常高,后台操作,不影响前台访问速度;
缺点:暂时没发现;
对比:你们可以看一下本贴子下面的DISCUZ提供的相关内容,可以说完全不准确;如果本标题用我用的这个切词应该是:感恩,回馈,依赖,TAG,相关,文章,精度。
然后从数据库中按关键字相同文章进行匹配;返回顺序从最高匹配开始,并且执行效率非常高;
也就是说,哪篇文章拥有以上关键字最多,则从最多的开始返回结果;
功能:相关性是SEO中非常重要的因素,这是关系到你网站的整体性;就像是一个人来向你了解关于“怎么把文章相关度提高”,然后你除了向他提供此消息外,还提供相关度代码,方案,功能,案例等等他感兴趣的内容;对搜索也一样,它也是尽可能摸拟人的思维去判断一个网站质量的好坏;
提示:我用的discuz x2,我会把涉及的文件和原代码贴出来,但是你要搬走需要稍微懂点代码;因为这是纯手写的,无插件;
我也是个代码盲,只能混个眼熟,认识几个常用的单词;你也只要到这个程度,甚至更低的程度就能搬走;如果你懂较多代码的只要把这个思路学了,可以自己开发插件;
原文地址:http://t.yest.la/?p=164
具体操作如下: 第一步:thread表加新字段:tag,类型为text 索引为全文索引 第二步:下载pscws4放到网站根目录; 第三步:更新老数据:CODE{ <?php
require ‘fc/pscws4.class.php’;
function keya($text){
$pscws = new PSCWS4(‘utf8′);
$pscws->set_dict(‘fc/etc/dict.xdb’);
$pscws->set_rule(‘fc/etc/rules.ini’);
$pscws->send_text($text);
$s=””;
while ($some = $pscws->get_result())
{
foreach ($some as $word)
{
//
if (strlen($word[word])>2)//UTF8编码的请设置为3,由于UTF8编码的中文普通为3个字节以上,过滤单个
字不保管!
{
$k.=base64_encode($word[word]).” “;
echo $word[word];
}
//
}
}
return $k;
} $conn=mysql_connect(“localhost”, “uers”, “password”);
mysql_select_db(“dbname”);
mysql_query(“set names ‘utf8′”); if($query=mysql_query(“select tid,subject from thread where displayorder>=0
“,$conn))
{
while($row=mysql_fetch_array($query))
{
$k= keya(iconv(“UTF-8″, “GB2312//IGNORE”, $row[subject]));
if(mysql_query(“update thread set tag=’$k’ where tid=$row[tid] “,$conn))
echo $k.$row[tid].”成功!<br>”;
}
} ?> } 第四步:检索数据,文件:forum_viewthread.php,CODE{ $colist=””;
$i=1;
//随即查询over
$row=DB::fetch(DB::query(“SELECT tid,tag FROM “.DB::table(‘forum_thread’).” WHERE
displayorder>=0 and tid=$_G[tid]“));
$tag=$row[tag]; $query = DB::query(“select subject,tid,MATCH(tag) AGAINST(‘”.trim($tag).”‘ IN BOOLEAN MODE) AS
score from “.DB::table(‘forum_thread’).” where MATCH(tag) AGAINST(‘”.trim($tag).”‘ IN BOOLEAN
MODE) and tid!=$row[tid] and displayorder>=0 ORDER BY score DESC limit 10″);
while($rs = DB::fetch($query)) {
$colist[$i]['tid']=$rs[tid];
$colist[$i]['subject']=$rs['subject'];
$i++;
} } 第五步:前台代码,文件:viewthread_node.htm,CODE{ <!–{loop $colist $var}–>
<li>• <a href=”c$var[tid]1-1/” title=”$var[subject]” target=”_blank”>$var[subject]</a></li>
<!–{/loop}–> } 第六步:效果
第七步:发贴时获取数据,文件:post_newthread.php,CODE{ 1、文件头部加入: require ‘./fc/pscws4.class.php’; function keya($text){
$pscws = new PSCWS4(‘utf8′);
$pscws->set_dict(‘./fc/etc/dict.xdb’);
$pscws->set_rule(‘./fc/etc/rules.ini’);
$pscws->send_text($text);
$s=””;
while ($some = $pscws->get_result())
{
foreach ($some as $word)
{
//
if (strlen($word[word])>2)//UTF8编码的请设置为3,由于UTF8编码的中文普通为3个字节以上,过滤单个字不保管!
{
$k.=base64_encode($word[word]).” “;
echo $word[word];
}
//
}
}
return $k;
} 2、查找:insert 或者 $tid = DB::insert_id(); 在下面加入: $taga=keya($subject);
DB::query(“update “.DB::table(‘forum_thread’).” set tag=’$taga’ where tid=$tid”); }
PS:怎么加新词?code{ function get_key($str,$k){ if(strstr($str,”新词”)) $k.=” xinci”;//前面有个空格,只是举例,可以根据自己的需要写成数组或编入数据库,php中文转英文百度一查就知道 } }
|