
正文
php新增数据做重复检验 php查重算法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
php根据相似度查找重复数据怎么实现?
1.首先,题主应该选一个相似度的计算维度,比如content字段,type字段等;
2.其次,题主考虑一下各个字段的权重,比如type字段必须相同,则让type字段使用typeWeight(例如赋值0.8)作为乘积的因子,而content字段本身是比较长的,所以需要计算出一个hash值,比如使用特定算法计算出一个hash值,然后把这个hash值按照16进制计算得到10进制数,再给一个权重contentWeight(例如0.2),另外再选取一个字段,比如description描述字段,再给一个权重descriptionWeight...
3.最后得到一个当前插入到表中的记录综合hash,typeWeight(contentHashcontentWeight+descriptionHash*descriptionWeight +...),可能会涉及到大整数计算,不过PHP有BCMATH扩展可以使用,最终得到一个数值的综合hash值,保存到数据库的一个字段中,这个东西就可以理解为本条记录的特征值。
相关问答
Q1: ThinkPHP上传文件及如何判断上传数据是否重复
在数据库添加一个保存文件md5码字段php新增数据做重复检验,上传时对文件md5进行效验php新增数据做重复检验,看看文件是否存在php新增数据做重复检验,
Q2: PHP如何判断输入数据库的字段值不能重复
将关于mysql函数 全部改成mssql前缀
$sqlwhere = "select * from $dbzh where ……";//具体哪些字段重复,在where后面加上条件即可
$result = mssql_query($sqlwhere);
$num = mssql_num_rows($result);
if ($num == 0){
//新增操作
}
只要查询它的ID是否存在,如果存在的话,就重复了,如果不存在的话,就说明没重复
mssql_get_last_message 函数是做什么用的
Q3: 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 "";//返回空串,表示无匹配
}
说明,数据库中的论文要进行整理,整理为匹配模板,删除多余的空格、回车、换行,把所有的表达符号替换为空格,这样数据库里面的论文模板就是空格分开的句子。
Q4: PHP向MSSQL插入数据时判断 某个字段是否有重复。
不管是mysql也好,还是mssql也好,sql语句都是差不多的,只是有少许不同!
只不过, 是操作函数不同而已!
具体的话,如果php是低版本的, 那差不多,把mysql函数改成mssql函数即可, 比如: mysql_query()可以改成mssql_query()
其他函数同理
但如果php是高版本的,就有些麻烦了, php高版本,已经默认不支持sql server数据库了, 要去微软下一个文件,给php配置一下才可以用, 函数也不同了。
关于php新增数据做重复检验和php查重算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







