最近做一个关于附近的人查询,参考了很多资料:现在市面上主流的做法
1.用数据库
2.用类存
3.用lucene
我选用的是用mongodb自带的查附近的人的方法,代码如下:
DBObject db = new BasicDBObject("cityId", JSON.parse("{$orderby:{cityId: -1}}")); DBObject near = new BasicDBObject( "loc",JSON.parse("{$near : [ " + lon + "," + lat + " ] }")); DBObject query = new BasicDBObject(); //query.put("cityId", 110000); //near.put("cityId", 110000); DBCursor cur = coll.find(near, query); int n = 0; while(cur.hasNext()){ DBObject c = cur.next(); BasicDBList loc = (BasicDBList)c.get("loc"); }
?这种做法可以分页,但是由于mongodb的算法实现问题,查出来的附近的人可能距离排序不是很准,单总体趋势是正确的