Доброй ночи.
В бд есть около 150к товаров. Естественно при добавлении новых начали где то появляться дубликаты.
Они не полностью идентичны, то есть, гдн то это «сплит-система блабла» и «блабла сплит система» или в конце пробел стоит. Как можно максимально точно отыскать совпадения?
Товаров много и некоторые отличаются моделями (где разница 1-2 цефры)
мб есть готовые решения?
Руками перебирать уж очень долго будет
http://php.net/manual/ru/funct ... n.php
http://php.net/manual/ru/funct ... t.php
$words = array(
"сплит-система блабла",
"блабла сплит система",
"852 система",
"система 5000");
foreach ($words as $input)
{
$input = preg_replace('/[^ a-zа-яё\d]/ui', ' ', $input);
echo "<strong>$input</strong><br />";
foreach ($words as $word)
{
if ($word == $input)
{
continue;
}
$word = preg_replace('/[^ a-zа-яё\d]/ui', ' ', $word);
$l = levenshtein($input, $word);
$sim = similar_text($input, $word, $perc);
echo "<p>$word<br />";
echo ($l < 11 ? '<font color="red">levenshtein: </font>' : 'levenshtein: ') . $l;
echo "<br />";
echo ($perc > 69 ? '<font color="red">similar_text: </font>' : 'similar_text: ') .
"$sim ($perc %)";
echo '<br /><------><br />';
}
}
Можно еще попробовать менять слова местами.
Еще есть
https://github.com/tgalopin/SimHashPhp
Симилар и левенштайн по отдельности рассматривал, даже не подумал совместить )) Сейчас попробуем что-нибудь