cancel
Showing results for 
Search instead for 
Did you mean: 

what is the best way to group your nodes so that you can make faster queries based on location

jcct100
Node

Hi guys, I am new to Neo4j. I want to find out what is the best way to group your nodes so that you can make faster queries based on location using Neo4j.

I will have a lot of users in the database. I will be making queries to return the top 10 users closest to a particular user/location. When making the query, I want to narrow down the search before working out the distances between the users and then ranking them based on who is the closest.

I need advice on the best approach using Neo4j. I can think of two ways to group them but I am not sure if it's feasible or how to execute them yet.

1) Divide the world up into grids, give each grid a cell id and create a node for each id. Make a direct relationship between the users and the cell id.
2) Create a node for each city or town. All users living in that town or city will have a direct relationship. But if I do that how should I group a user that shares two borders?

Please see image

3 REPLIES 3

ameyasoft
Graph Maven

This is what I understood from your image.
1.Waterloo: from lat and lang values this address is in Canada. User 1 and User 2 lat and lang values show the addresses in London, UK. I assume these Users have two addresses in two different countries. This what you are referring in option 2.

2. I prefer option 2 and add PrimaryResidence and SecondaryResidence properties to each user. For users with no SecondaryResidence you can set 'NA' and thus avoid null values issues.

Hope my analysis is correct.  

Sorry I added the wrong Lat and Lng. There is a town called WaterLoo in London. Why do you prefer option 2 over option 1?

I do not know anything about your grid and its properties. How is it connected to many users with different locations?
With option 2: Create a node for each city or town. All users living in that town or city will have a direct relationship.

Q: But if I do that how should I group a user that shares two borders? 
A: By creating Primary and Secondary address properties.

Nodes 2022
Nodes
NODES 2022, Neo4j Online Education Summit

On November 16 and 17 for 24 hours across all timezones, you’ll learn about best practices for beginners and experts alike.