Ⅰ 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 "";//返回空串,表示無匹配
}
說明,資料庫中的論文要進行整理,整理為匹配模板,刪除多餘的空格、回車、換行,把所有的表達符號替換為空格,這樣資料庫裡面的論文模板就是空格分開的句子。