Ⅰ PHP做一个简单的类似论文查重的功能
思路是可以的:
//步骤一,分句,把原文$text按标点符号分为句子存入数组$arr,只保存长度15个字符以上的句子
//本步骤应该没有难度
//步骤二,判断数组$arr中的每个句子在现有数据库中是否匹配
foreach ($arr as $str){
if CheckS($str) 标记句子$str;
}
//函数,在数据库里面匹配指定的句子,返回最大匹配的子串
function CheckS($s){
$n=strlen($s);//考虑汉字编码,可能需要使用多字节的函数,这里只是含义描述
for ($i=0;$i<=$n-15;$i++){
$ss=left($s,$n-$i);//前$n-$i(全长、少1个、少2个、15个)个字符
$sql="select count(*) from 数据库 where 论坛内容 like '%$ss%'";
if 数据库中的论文正文存在字符串$ss then return $ss;
$ss=right($s,$n-$i);//后$n-$i(全长、少1个、少2个、15个)个字符
$sql="select count(*) from 数据库 where 论坛内容 like '%$ss%'";
if 数据库中的论文正文存在字符串$ss then return $ss;
}
return "";//返回空串,表示无匹配
}
说明,数据库中的论文要进行整理,整理为匹配模板,删除多余的空格、回车、换行,把所有的表达符号替换为空格,这样数据库里面的论文模板就是空格分开的句子。