Поиск дублей по бд

388
.
Доброй ночи.
В бд есть около 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
.
Симилар и левенштайн по отдельности рассматривал, даже не подумал совместить )) Сейчас попробуем что-нибудь
Всего: 3