最近做一个关于附近的人查询,参考了很多资料:现在市面上主流的做法
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的算法实现问题,查出来的附近的人可能距离排序不是很准,单总体趋势是正确的