public static List<CollegeInfo> searchNearCollege(double lng,double lat,double distance,String collegeName,int curPage, int pageSize) throws IOException{
Filter filter =null;
if (collegeName!=null&&collegeName.trim().length()>0) {
}else {
filter = getGeoFilter(lng, lat, distance);
}
//TopScoreDocCollector collector=TopScoreDocCollector.create(100, true);
//排序
Point pt = ctx.makePoint(lng,lat);
ValueSource valueSource = strategy.makeDistanceValueSource(pt);
Sort distSort = new Sort(valueSource.getSortField(false)).rewrite(searcher);
int start = (curPage - 1) * pageSize;
int hm = start + pageSize;
TopFieldCollector c = TopFieldCollector.create(distSort, hm, false, false, false, false);
Query collegeNameQuery = null;
Query pinYinQuery = null;
Query pinYinJxQuery = null;
if (collegeName!=null&&collegeName.trim().length()>0) {
collegeNameQuery = new WildcardQuery(new Term("collegeName",WILDCARD+collegeName+WILDCARD));
pinYinQuery = new WildcardQuery(new Term("PinYin",WILDCARD+collegeName.toLowerCase()+WILDCARD));
pinYinJxQuery = new WildcardQuery(new Term("PinYinJx",WILDCARD+collegeName.toLowerCase()+WILDCARD));
searcher.search(collegeNameQuery,filter,c);
searcher.search(pinYinQuery,filter,c);
searcher.search(pinYinJxQuery,filter,c);
}else {
collegeNameQuery = new MatchAllDocsQuery();
searcher.search(collegeNameQuery,filter,c);
}
//TopDocs td = searcher.search(query, filter,limit_max,distSort);
TopDocs td = c.topDocs(start, pageSize);
List<CollegeInfo> collegeInfos = parseSearchDocs(td, searcher);
return collegeInfos;
}