0

Предположим, у меня есть 700 000 наблюдений за продуктами, которые имеют определенные атрибуты, позволяют называть их тегами.Какие рамки/db предлагают хорошее решение для фильтрации на основе контента?

И скажем, у нас есть userX. Я хочу реализовать простой метод фильтрации на основе контента: ранжируйте продукты на основе количества тегов/релевантности. Так что давайте говорить userX имеет предпочтение: - желтый - цена (0-15) - Фирменные

Чтобы получить рекомендацию, то потребуется перебрать все 700.000 наблюдения (может быть сделано в базе данных NoSQL настройка нормализации с помощью тегов, но все же может быть много наблюдений при наличии нескольких тегов) и подсчитать количество тегов, которые присутствуют в определенном продукте.

Какую структуру или способ можно использовать для быстрого выполнения? То есть чтобы получить результат в течение нескольких секунд?

Некоторые вещи, которые я думал, были:

  • чистый nodejs сервер
  • чистый питон сервер
  • Neo4j граф базы данных, но не знаете, как отношения могут быть реализованы в этой ситуации?

ответ

1

Включены ли пользовательские покупки/взаимодействия в «наблюдения» продукта? Если да, то в базе данных графа как Neo4j можно моделировать данные, как это:

enter image description here

Здесь у вас есть пользователь, который приобрел продукт, где этот продукт имеет один или атрибуты более тегов. Для того, чтобы генерировать рекомендации на основе контента, можно затем использовать Cypher запрос следующим образом:

MATCH (u:User {name: "Bob"})-[:PURCHASED]->(p:Product) 
MATCH (p)-[:TAGGED]->(t:Tag) 
MATCH (t)<-[:TAGGED]-(rec:Product) WHERE NOT (u)-[:PURCHASED]->(rec) 
RETURN rec, count(*) AS weight ORDER BY weight DESC 

Этот запрос, по существу, говорит: «Найти все продукты, которые Боб закупленные Найти тег для этих продуктов Теперь найти продукты с теми.. те же теги, которые Боб не приобрел. Порекомендуйте эти продукты Бобу, показывая сначала продукты с наибольшим количеством перекрывающихся тегов ».

Дополнительная информация об этом доступна in this video и in this tutorial.

+1

Для примера в реальном мире это [сообщение в блоге] (http://neo4j.com/blog/date-night-movie-neo4j/) было опубликовано только сегодня, в котором представлены рекомендации по контенту для фильмов. –

+0

Это выглядит очень интересно! На самом деле, ваш пример - это все, что мне нужно ... – JohnAndrews

+0

Мне просто нужно добавить: у меня есть 700 000 предметов, а nb покупок должно быть не более 50 на пользователя. Может ли neo4j справиться с этим качеством? – JohnAndrews