On shopping sites users are given recommendations based on their purchasing habits, on dating sites users are recommended members based on their personality tests and/or locations.
I have a need to display to my site’s user’s other members who are near them so they can make new friends etc.
What would be a good way to go about this?
In order to avoid displaying the same old people over and over I was thinking of doing something like this,
at first displaying other members who are in the same zip code as the user. And having a “displayed” flag in the database which would be a timestamp that’s updated each time a member is recommended.
Before displaying I can check to see if the displayed timestamp is at least a week old, if so then I can show them, otherwise I will venture further and further and display other members who are in the same city, state, country, etc.
This seems a bit complicated and will require a lot of database checks and processing time in general. So I was wondering, if there is an easier way. Are there any established way to do these sorts of recommended lists functionality?
Node, Graph, and Recommendation Databases are designed explicitly for this task.
http://easyrec.org/
http://neo4j.org/
http://glaros.dtc.umn.edu/gkhome/suggest/overview
http://mahout.apache.org/
I would recommend not attempting to re-implement this especially with a Relational Database. Speaking from experience when I had a client that wanted Yelp-Like features using only PHP and MySQL – it is like shoving a square peg in a round hole.