我正在尝试开发一种方法,可以获取具有多个属性的实体,并在数据库中搜索相似的实体(尽可能匹配正确顺序的尽可能多的属性)。想法是它将返回一个相似度的百分比。
应该考虑属性的顺序,因此开头的属性比结尾的属性更重要。
例如:
项目1 - A,B,C,D,E 项目2 - A,B,C,D,E
将是100%匹配
项目1 - A,B,C,D,E 项目2 - B,C,A,D,E
这不是完美的匹配,因为属性以不同的顺序出现
项目1 - A,B,C,D,E 项目2 - F,G,H,I,A
只有一个属性相同且位于第5个位置,因此匹配度较低
这个算法需要处理成千上万条记录,因此需要高性能和高效率。有什么想法可以在PHP/MySQL中以快速和高效的方式实现吗?
我正在考虑 levenshtein,但据我所知,它也会考虑拼写方面两个完全不同单词之间的距离。除非我使用方法错误,否则似乎并不理想。
也许可以仅使用MySQL来完成,可能使用全文搜索或其他方法。
这似乎是一个 不错的解决方案,尽管不是为这种情况设计的。也许可以以某种方式使用二进制比较?
应该考虑属性的顺序,因此开头的属性比结尾的属性更重要。
例如:
项目1 - A,B,C,D,E 项目2 - A,B,C,D,E
将是100%匹配
项目1 - A,B,C,D,E 项目2 - B,C,A,D,E
这不是完美的匹配,因为属性以不同的顺序出现
项目1 - A,B,C,D,E 项目2 - F,G,H,I,A
只有一个属性相同且位于第5个位置,因此匹配度较低
这个算法需要处理成千上万条记录,因此需要高性能和高效率。有什么想法可以在PHP/MySQL中以快速和高效的方式实现吗?
我正在考虑 levenshtein,但据我所知,它也会考虑拼写方面两个完全不同单词之间的距离。除非我使用方法错误,否则似乎并不理想。
也许可以仅使用MySQL来完成,可能使用全文搜索或其他方法。
这似乎是一个 不错的解决方案,尽管不是为这种情况设计的。也许可以以某种方式使用二进制比较?