DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations

Trending

  • How To Scan and Validate Image Uploads in Java
  • Integration Architecture Guiding Principles, A Reference
  • WireMock: The Ridiculously Easy Way (For Spring Microservices)
  • 4 Expert Tips for High Availability and Disaster Recovery of Your Cloud Deployment
  1. DZone
  2. Data Engineering
  3. Databases
  4. Building a Dating Site With Neo4j: Part 1

Building a Dating Site With Neo4j: Part 1

This introductory post begins the journey of mapping potential dates as relationships and building a dating site with Neo4j.

Max De Marzi user avatar by
Max De Marzi
·
Aug. 11, 18 · Tutorial
Like (4)
Save
Tweet
Share
6.54K Views

Join the DZone community and get the full member experience.

Join For Free

You might have already heard that Facebook is getting into the Dating business. Other dating sites have been using graphs in the past and we’ve looked at finding love using the graph before. It has been a while though, so let’s return to the topic making use of the new Date and Geospatial capabilities of Neo4j 3.4. I have to warn you though that I’ve been with Helene for almost 15 years and missed out on all this dating site fun, what I do know I blame Colin for it and some pointers from the comments section of this blog post.

Dating sites face a series of challenges, the first one is lack of users. Only two ways to fix that, the first one involves having lots of money to pay for national advertisements, the second involves word of mouth. So you dear reader have to either invest a few million dollars or join our new dating site and tell all your friends about it.

The second challenge is matching people together. Sure looks are important, but we can’t all be “5/7” or look like Seven of Nine. We want to find people who share common values, both in terms of the things they love and hate. Sometimes though, it is opposites that attract. So we’ll need a ranking system, but also the ability to flip it around and see who else is out there.

The third challenge dating sites face is messages. More specifically crude overtly sexual messages from desperate uglies to every profile. To fix this, some sites only let paying members send messages, which isn’t super effective. Other sites have decided that only women may send messages. We’re going to try something different. More on that in a bit.

The fourth challenge is getting people to keep coming back to the dating site and staying there. We’re going to combine the last two problems and try to solve them together. Dating sites can’t use the “swipe right/left” gimmick anymore, so we will try some new things in our dating site. We are going to give users the ability to “appear” in front of potential mates more than once, and to be able to make a different impression each time. So instead of focusing on profiles alone, we want our users to create content (words or pictures) to attract mates. We will let users “high five” content they like, which will allow the person who posted that content to contact the “high fiver”. But we want to instill a sense of urgency in making contact, so the “high fives” will expire after 5 days, and to avoid people spamming “high fives”, users will start with 5 “high fives” a day, and earn a “high five” every time they get a “high five”.

The fifth challenge is really really really ridiculously good looking people getting all the attention and making the “normies” feel like “uglies”. So we’ll balance things out by allowing people to “low five” content they don’t like. Especially the pretty pictures of their rivals. When a post gets a “low five”, part of it will be hidden. The more “low fives” it gets, the less of it will be shown. For example:

To avoid too much hate, a user will also start with only 5 “low fives” a day, and earn more for every “low five” they get. These “low fives” will also expire after 5 days. All this high and low fiving is just for fun, the bottom line is people just want to interact with people who message back and talk about making a date.

Alright, that’s plenty of introduction. Let’s start with an initial data model of user interactions.

The things to note are the “Date” type properties in Message, and the HIGH_FIVE, LOW_FIVE relationships. We are still going to use the “dated relationship” trick for Posts, and we will borrow the geospatial data model of a previous post. These are my initial thoughts and subject to change, we’ll see as we build this application together. What would you like to see in a dating site? If you have any suggestions, please leave a comment below.

The code is still very much in progress, but if you want to see what I have so far, take a sneak peek at this GitHub repository. I’ll walk through the interesting bigs in the next set of blog posts.

Neo4j

Published at DZone with permission of Max De Marzi, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Trending

  • How To Scan and Validate Image Uploads in Java
  • Integration Architecture Guiding Principles, A Reference
  • WireMock: The Ridiculously Easy Way (For Spring Microservices)
  • 4 Expert Tips for High Availability and Disaster Recovery of Your Cloud Deployment

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com

Let's be friends: