2010-01-03 3 views
6

У Amazon есть «Покупатели, которые купили этот товар, также приобрели».Что мне нужно в базе данных для «Покупатели, которые купили этот товар, также приобрели»?

Мне интересно и хочу добавить это в свою корзину, которую я сделал.

Какие поля нужны в базе данных? Любой сайт, блог или ресурсы для этого?

Можете ли вы предложить механизм, как мне его закодировать?

ответ

1

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

+0

Подробнее plz? – shin

6

Возможно, вам не нужны новые поля в вашей базе данных - просто сохраняйте историю своих заказов. Затем, когда вы хотите, чтобы найти список того, что купили другие люди:

  1. Выберите всех пользователей, которые имеют порядок, содержащий пункт X
  2. Для каждого из этих пользователей, в общей сложности до всего остального они купили
  3. Get верх 3/5/все, и есть ваш список.
+1

Простые системы счисления, как правило, делают довольно слабые рекомендации. Это проблема статистики/данных. – RickNZ

+0

@RickNZ Простые подсчеты являются надежными оценщиками. Сложно ≢ лучше. @nickf @alix axel Вы можете включить пересечения и обрезать минимум 25% и улучшить счет. – isomorphismes

+1

На шаге 2 я бы только считал предметы, которые были заказаны примерно в то же время, что и X, или давали им более высокий вес. –

3

Это не слишком сложно. Предположим, у вас есть следующие таблицы:

  • Клиенты, первичный ключ CustomerID
  • Продукты, первичный ключ ProductID
  • Заказы, первичный ключ OrderID, внешний ключ CustomerID
  • ТоварыЗаказа , первичный ключ OrderItemID, внешние ключи OrderID, ProductID

Чтобы найти продукты, которые вы ищете, вы должны найти множество клиентов, которые купили этот конкретный продукт ID:

SELECT CustomerID 
FROM (Customers INNER JOIN (Orders INNER JOIN OrderItems)) 
WHERE OrderItem.ProductID = <your product id here> 

Затем вам нужно получить другие продукты тех клиентов, которые купили:

SELECT ProductID 
FROM (Customers INNER JOIN (Orders INNER JOIN OrderItems)) 
WHERE (Customer = <given customer ID>) AND (ProductID <> <your product id>) 

Затем выберите лучшие товары, и вы отправитесь на гонки.

Примечание: Я численный парень. Гуру-гуру смогут сделать это в 1 запросе!:)

0

Необходимо "Programming Collective Intelligence". У них есть несколько хороших глав о рекомендациях и т. Д. Вы хотите прочитать о различиях Пирсона и других мерах.

0

Взгляните на Algorithms of the intelligent web, глава 3 «Создание предложений и рекомендаций». На ваш вопрос: необязательно, вам может понадобиться таблица с оценками пользователей для разных элементов. Основываясь на этих рейтингах, вы сможете измерить сходство между двумя клиентами, а затем выполнить оценку, основанную на этих значениях, на предметах, которые достигнет один из клиентов. Эти оценки используются для ранжирования позиций.

Также см. Главу 4 Apriori algorithm или ее общее описание here; это работает для предметов, купленных вместе и извлекающих некоторые правила ассоциаций. На основе этих правил вы обнаружите, какой из продаваемых вами предметов может быть добавлен в корзину клиента. По вашему вопросу: никакое дополнительное поле не должно быть добавлено в вашу базу данных; вы должны поддерживать только таблицу для групповых элементов, купленных вместе (содержимое корзин).