- LeanCloud复合查询
Dao.java
package com.shijiebang.offlinemap.db.SJBDao;
import com.avos.avoscloud.AVException;
import com.avos.avoscloud.AVObject;
import com.avos.avoscloud.AVQuery;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* Created by zhangkaiyue on 15/7/29.
*/
public class SJBSearchLeanCloudDao {
public AVQuery<AVObject> cityMapQuery(String str){
//搜索城市
AVQuery<AVObject> cityMapQueryByCity = new AVQuery<AVObject>("CityMaps");
cityMapQueryByCity.setCachePolicy(AVQuery.CachePolicy.IGNORE_CACHE);
cityMapQueryByCity.whereMatches("searchKeys", ".*" + str + ".*");
//搜索国家
AVQuery<AVObject> countriesQueryByCountry = new AVQuery<AVObject>("Countries");
countriesQueryByCountry.setCachePolicy(AVQuery.CachePolicy.IGNORE_CACHE);
countriesQueryByCountry.whereMatches("searchKeys", ".*" + str + ".*");
AVQuery<AVObject> citymapQueryByCountry = new AVQuery<AVObject>("CityMaps");
citymapQueryByCountry.setCachePolicy(AVQuery.CachePolicy.IGNORE_CACHE);
citymapQueryByCountry.whereMatchesQuery("country", countriesQueryByCountry);
//搜索大洲
AVQuery<AVObject> continentsQueryByContinet = new AVQuery<AVObject>("Continents");
continentsQueryByContinet.setCachePolicy(AVQuery.CachePolicy.IGNORE_CACHE);
continentsQueryByContinet.whereMatches("searchKeys", ".*" + str + ".*");
AVQuery<AVObject> countriesQueryByContinent = new AVQuery<AVObject>("Countries");
countriesQueryByContinent.setCachePolicy(AVQuery.CachePolicy.IGNORE_CACHE);
countriesQueryByContinent.whereMatchesQuery("continent", continentsQueryByContinet);
AVQuery<AVObject> citymapQueryByContinent = new AVQuery<AVObject>("CityMaps");
citymapQueryByContinent.setCachePolicy(AVQuery.CachePolicy.IGNORE_CACHE);
citymapQueryByContinent.whereMatchesQuery("country", countriesQueryByContinent);
List<AVQuery<AVObject>> queries = new ArrayList<AVQuery<AVObject>>();
queries.add(cityMapQueryByCity);
queries.add(citymapQueryByCountry);
queries.add(citymapQueryByContinent);
AVQuery<AVObject> combineQuery = AVQuery.or(queries);
combineQuery.setCachePolicy(AVQuery.CachePolicy.IGNORE_CACHE);
combineQuery.include("country");
combineQuery.include("mapFile");
combineQuery.orderByAscending("pinyin");
return combineQuery;
}
//将搜索传到LeanCloud
public AVObject SJBToLeanCloud(String str){
AVObject post = new AVObject("SearchKeywords");
post.put("keyword", str);
return post;
}
}