New_Horizons
@New_Horizons
Бред:

Как сопоставить две базы товаров?

Есть две базы товаров. Допустим, у каждого товара в обеих базах есть id и название.
Объём баз по ~20000 товаров.

Примеры товаров в первой базе:
21502 "Катушка Shimano CATANA 4000 RC"
23517 "Видеорегистратор с поворотными камерами Playme Nio"

Эти же товары во второй базе:
19446 "Катушка ALIVIO 4000 RC"
282999 "Видеорегистратор с 2-мя камерами PLAYME NIO"

Задача связать товары между базами по id.
Понятно, что это ручная работа, но может есть способ хотя бы упростить эту работу? Подозреваю, что это связано с нечётким поиском? Есть какие-то библиотеки для подобного?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
New_Horizons
@New_Horizons Автор вопроса
Бред:
В общем использовал sphinx search, проиндексировал бОльшую базу, и искал в ней по названиям из другой базы. Пробелы заменял на символ "|", и ручное модерирование совпаденией.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@MikUrrey
Библиотек не знаю, но, если правильно понял задачу, опирался бы в решении на следующие подсказки:
1) Сделать инструмент консольным
2) Пройти по каждому товару в первой базе и вывести возможные совпадения по второй
3) Для получения совпадений разбить название на слова, короткие отбросить, по остальным составить условие типа такого: LIKE % word1 % AND LIKE % word2 % AND LIKE % word3 % и т. д.
4) Опираясь на количество совпадений и порядок следования слов вывести процент схожести по каждой позиции
5) Предоставить input, где можно будет ввести ID совпадения вручную или выбрать позицию с наибольшим совпадением по мнению скрипта, просто нажав Enter.

Вот, в принципе, и всё. Только, исходя из своего опыта, скажу что 20000 это реально много для ручной обработки, даже с таким скриптом))
Ответ написан
Комментировать
Adamos
@Adamos
Колхоз на коленке:
- таблица: id - слово (уникальный индекс)
- таблица: база товара (1 или 2), артикул (индекс), id слова в таблице слов.
Для каждого товара из каждой базы разбиваете название на слова, для каждого из них делаете запись в обеих таблицах. Получится несколько миллионов записей, это не так страшно и не так долго, если не косячить с запросами.
Потом по артикулам первой базы запрашиваете артикулы второй, у которых во второй таблице больше всего записей с id прописанных для первого артикула слов. Из десятка лидеров выбираете вручную сопоставление.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы