Я занимаюсь разработкой сайта сравнения покупок, и проект находится на очень продвинутой стадии. Мы ежедневно индексируем 50 миллионов продуктов, используя торговые каналы из различных партнерских сетей. Большинство проблем, которые у меня были, уже решены, включая большинство узких мест производительности.
В чем моя проблема: пожалуйста, во-первых, мы используем Apache Solr с Drupal, НО, эта проблема не является специфичной для Drupal или Solr, если вы не знаете их, это не имеет значения.
Мы получаем товарную ленту от более чем 2000 различных продавцов, и эти каналы беспорядок. У них нет определенного шаблона, каждый продавец отправляет каналы так, как он хочет. Мы уже решили много проблем, связанных с этим, но одна остается. Нормализация терминов таксономии для функциональности фасетного просмотра.
Предположим, что у меня на сайте есть фасет "Narrow by Brands". Теперь предположим, что 100 продавцов предлагают продукты от Microsoft. Теперь приходит проблема. Некоторые продавцы помещают в столбец «Бренды» фид данных «Microsoft», другие «Microsoft, Inc.», другие «Microsoft Corporation», другие «Продукты от Microsoft» и т. Д. некоторые отдельные торговцы настолько небрежны, что имеют разные строки для одной и той же марки в одном и том же потоке данных.
Мы не хотим, чтобы все эти разные бренды появлялись в навигации. У нас есть ручное решение проблемы, когда мы вручную сопоставляем импортированные бренды с таблицей «хороших» брендов («Microsoft Corporation» -> «Microsoft», «Продукты от Microsoft» -> «Microsoft» и т. Д.). У нас есть около 10000 брендов в базе данных, и это выполнимо. Проблема в том, что когда речь идет о более крупных вещах, таких как «Авторы». Когда мы импортируем книги в систему, существует более 800 000 авторов, и у нас возникает та же проблема, и это невозможно решить вручную. Проблема та же: «Том Майк Апостол», «Том М. Апостол», «Апостол, Том М.» и т. Д. *
Кто-нибудь знает хороший способ автоматического решения этой проблемы с приемлемой степенью точности (точность 85% -95%)?
Спасибо вам за помощь!