I'm trying to perform a geospatial search in ArangoDB and even though the analyzer returns true, the search results are empty.
The query attempts to find all users who are within range (distanceMeters) of this user:
FOR user IN users
FILTER user._key == 'c8a8d416-a0c2-4cc4-b583-ad0a8bfb3389'
LET userLocation = GEO_POINT(user.location[0], user.location[1])
LET distanceMeters = 100 * 1609
FOR targetUser IN UserSearch
SEARCH ANALYZER(GEO_DISTANCE(userLocation, targetUser.location) < distanceMeters, "geoPair")
LET analysis = ANALYZER(GEO_DISTANCE(userLocation, targetUser.location) <= distanceMeters, "geoPair")
LET distance = ROUND(GEO_DISTANCE(targetUser.location, user.location))
SORT distance
LIMIT 10
RETURN {
analysis,
distance,
userLocation: user.location,
targetLocation: targetUser.location,
}
This returns an empty array
[]
If I comment out the SEARCH line, it returns results with the analysis attribute set to true:
[
{ "analysis":true, "distance":0, "userLocation":[37.80435,-122.271164], "targetLocation":[44.05207,-123.086754] },
{ "analysis":true, "distance":0, "userLocation":[37.80435,-122.271164], "targetLocation":[34.151783,-118.45889] },
{ "analysis":true, "distance":0, "userLocation":[37.80435,-122.271164], "targetLocation":[37.33874,-121.885254] }
]
Additional Details
ArangoDB version: 3.11.4
The UserSearch view definition:
{
"writebufferSizeMax": 33554432,
"id": "9348168",
"storedValues": [],
"name": "UserSearch",
"type": "arangosearch",
"consolidationPolicy": {
"type": "tier",
"segmentsBytesFloor": 2097152,
"segmentsBytesMax": 5368709120,
"segmentsMax": 10,
"segmentsMin": 1,
"minScore": 0
},
"writebufferActive": 0,
"links": {
"users": {
"analyzers": [
"identity"
],
"fields": {
"location": {
"analyzers": [
"geoPair"
]
}
},
"includeAllFields": true,
"storeValues": "none",
"trackListPositions": false
}
},
"commitIntervalMsec": 1000,
"consolidationIntervalMsec": 1000,
"globallyUniqueId": "h6E0356583726/9348168",
"cleanupIntervalStep": 2,
"primarySort": [],
"primarySortCompression": "lz4",
"writebufferIdle": 64
}
An example of a user document:
{
"birthday": 348278400000,
"gender": "man",
"name": "Jeremy",
"lastActive": 1698800214523,
"location": [
37.80435,
-122.271164
]
}