01
Сен
2017

Поиск похожих строк

В общем появилась задачка на подумать. Реализовать могу и сам, а вот реализовать то что... Кучу вариантов передумал, и везде одно и то же, слишком медленно, или слишком дыряво.

В общем в таблице продуктов (MySQL products), есть товар, у него есть поле title, в котором примерно записано следующее:

Сервер Dell PowerEdge R430 (210-ADLO-172)<1xE5-2650v4 1x16Gb 2RRD x8 2.5" RW H730 iD8En+PC 1G 4P 1x550W>

Есть таблица похожих продуктов ws_products, в которой есть поля art, title, description. Среди похожих продуктов, находится товар, имеющий примерно похожие название (Dell R430), номер (скажем 210.ADLO.172), описание (описание к примеру более развернутое, но так же присутствуют фразы 16GB H730 550W). Всё, больше ничего, никаких ключевых слов, оформления у товаров абсолютно разные.

Задача взять товар из таблицы похожей продукции и найти максимально похожий товар из таблицы оригиналов, или близкий к оригиналу

Сам пытался делать все через like, предварительно разбивая строку на целые слова без спец-символов (заменял на пробелы, брал слова больше чем два символа), и искал список всех похожих. Потом проходился по ним, брал шинглы, сравнивал размеры crc32, сортировал в порядке убывания кандидатов (по проценту вхождения одинаковых кусков), и получалась белиберда в общем, очень долго, товаров тьмень, что там, что там, и вешал в итоге сервак такими махинациями...

Пытался заюзать Сфинкс, и не вышло, строки изначально не разбиты, не имеют одинаковых оформлений, что в первой таблице, что во второй. По итогу нужны matches слов, цитат, не получилось разобраться, может я дурак...

Может есть у кого идея, как лучше всего это реализовать? Или если есть пример какой, особенно для Сфинкса, если он лучше подойдет к моей задаче.

Источник: https://ru.stackoverflow.com/questions/713423/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA-%D0%BF%D0%BE%D1%85%D0%BE%D0%B6%D0%B8%D1%85-%D1%81%D1%82%D1%80%D0%BE%D0%BA

Share

Тебе может это понравится...