最近做一個關於附近的人查詢,參考了很多資料:現在市面上主流的做法
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的算法實現問題,查出來的附近的人可能距離排序不是很準,單總體趨勢是正確的