大佬教程收集整理的这篇文章主要介绍了PHP / MySQL – 查找具有相似或匹配属性的项目,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
还应考虑属性的顺序,因此开头的属性比最后的属性更重要.
例如:
将100%匹配
这不是一个完美的匹配,因为属性的顺序不同
将是一个低匹配,因为只有一个属性是相同的,它位于第5位
该算法将运行成千上万的记录,因此需要具有高性能和高效率.有关如何以快速有效的方式在PHP / MySQL中执行此操作的任何想法?
我正在考虑levenshtein,但据我所知,这也将考虑拼写方面两个完全不同的单词之间的距离.除非我只是以错误的方式使用它,否则似乎不适合这种情况.
它可能只能在MySQL中完成,可能使用全文搜索或其他东西.
这似乎是nice solution,虽然不是为这种情况设计的.也许二进制比较可以用某种方式?
这是一个普遍的想法,可能仍然需要一些工作,但我希望它会在某种程度上有所帮助.
计算每个属性的数字(某种形式的散列),并将代表项目属性的出现顺序的数字相乘.
说item1有3个属性A,B和C.
hash(A)= 123,hash(B)= 345,hash(C)= 456
然后将它乘以出现的顺序,假设我们有一定数量的属性:
(hash(A)* 1,000,00)(hash(B)* 1,000)(hash(C)* 1)= someval
可以调整乘数的大小以反映您的数据集.你必须确定哈希函数. soundex也许?
现在问题由于哈希冲突而缩小为唯一性问题,但我们可以非常确定不匹配的属性.
此外,通过使用乘数的大小从生成的数字中提取散列值,这将具有相对容易检查属性是否以不同顺序出现在另一个项目中的优点.
HTH.
编辑:检查匹配的示例
给定项目1(a b c)和项目2(a b c).计算的项目哈希值相等.这是最好的情况.无需进一步计算.
给定项目1(a b c)和项目2(d e a).项目的计算哈希值不相等.继续打破财产哈希……
比如属性的哈希表a = 1,b = 2,c = 3,d = 4,e = 5,乘数为10 ^ n. item1的计算哈希值为123,项目2为451,分解每个属性的计算哈希值,并比较每个item1(变为item1(1 2 3))和item2(变为item2(4 5 1)的属性的所有组合. )).然后计算得分.
另一种看待它的方法是逐个比较属性,除了这次,你正在玩数字而不是实际的字符串值
以上是大佬教程为你收集整理的PHP / MySQL – 查找具有相似或匹配属性的项目全部内容,希望文章能够帮你解决PHP / MySQL – 查找具有相似或匹配属性的项目所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。