我有一个包含产品名称的庞大数据库。在将新产品插入数据库之前,我希望将产品与数据库匹配,以查明是否已存在(即获取相同或非常相似的条目的ID)相同,但有不同的描述,例如:
我不需要automatically
匹配这些条目,我只想生成匹配建议,然后让它们受到监督。
我对此有一些想法。关于我想要在数据库中找到相关条目的单个产品名称,例如" apple iphone-4s"。我的数据库看起来像:
替换" - ",","等特殊字符。等空间(Apple iphone-4s - > apple iphone 4s),然后将字符串分解为array('iphone', '4s')
,然后循环遍历此数组中的每个条目,并将其与数据库中的一个产品名称匹配并计算总点击次数。结果:匹配apple iphone 4s
< => array('apple', 'iphone', '4s')
到
iphone-4s
提供2次点击galaxy s4
提供0次点击iphone 3g
给出了1次点击apple nano
给出了1次点击samsung anything 4s
给出了1次点击对大多数匹配的匹配进行排序,即iphone-4s
最有可能与主管建议匹配。
apple iphone
,并且存储的数据库名称将是例如。是apple i-phone
。因此,只有一个而不是两个。从已存储的字符中删除每个非字母数字字符可能会增加命中率。在此示例中,存储的数据库条目将变为appleiphone
,因此在爆炸新产品名称apple iphone
之后,将会有两次点击。你有更好的想法吗?
答案 0 :(得分:2)
您可能需要考虑levenshtein距离函数:
http://www.php.net/manual/en/function.levenshtein.php
这是自然文本搜索引擎用来获得与你输入的单词类似的结果。我不知道如何在mysql中支持这个,但我知道我在solr索引中使用得很好。希望这会有所帮助。