我经营一个照片网站,用户可以在其中自由输入他们喜欢的任何标签,甚至是以前未使用过的标签。结果,标签的照片有时可能被标记为“昆虫”,而其他人将其标记为“昆虫”。
我想保留自由标记功能,但也想有办法过滤掉此类近似重复项。目前标签的总数为 1,500。我的想法是将所有这些从数据库读取到内存中,然后在其上运行一个显示“可疑”的算法。
我的想法是怀疑字符串中 x% 的字符是相同的(相同的字符和顺序),其中 x 是可配置的。我可能会编写一种非常低效的方法来执行此操作,但我想知道是否有解决此问题的现有解决方案?
编辑:忘记提及:仅对标签进行排序是不够的,因为这需要我遍历整个集合才能找到重复项。
最佳答案
你的逻辑有问题。例如,当一个对象的复数与单数不同时会发生什么(即人与人,甚至糖果与糖果)。
如果英语是主要语言,请查看 Soundex允许语音匹配。还可以考虑使用众包同义词模型,用户可以在其中创建指向现有标签的链接。
关于php - 需要一种算法来查找几乎重复的文本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7490411/