/**
* 索引试卷的记录
*/
public void examPaper(){
// 创建客户端.
SolrServer server = new HttpSolrServer(getSolrServer());
List<SearchResourceVo> ResourceSearchVoList= new ArrayList<SearchResourceVo>();
// 索引试卷的记录.
Long examPaperCount = examPaperDao.getExamPaperNumber();
Long examPaperCountPageCount = examPaperCount / pageSize;
if (examPaperCount % pageSize > 0){
examPaperCountPageCount++;
}
for (int i = 0; i < examPaperCountPageCount; i++){
try {
ResourceSearchVoList = initExamPaperIndex(i, pageSize) ;
if(null != ResourceSearchVoList && ResourceSearchVoList.size()>0){
server.addBeans(ResourceSearchVoList);
server.commit();
ResourceSearchVoList=null;
System.out.println("试卷"+"----"+i);
}
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("索引试卷数据完成");
}
private List<SearchResourceVo> initExamPaperIndex(int page,int size) throws Exception {
List<SearchResourceVo> searchResourceVoList =new ArrayList<SearchResourceVo>();
Query query = new Query();
query.setPageNum(page);
query.setNumPerPage(size);
PageFinder<ExamPaper> pageFinder = examPaperDao.findExamPaperIndexByPage(query);
if(null != pageFinder && null != pageFinder.getDataList() && pageFinder.getDataList().size()> 0 ){
List<ExamPaper> pf = pageFinder.getDataList();
for (ExamPaper kr : pf) {
SearchResourceVo vo = convert(kr);
if(null != vo && StringUtils.isNotBlank(vo.getId())){
searchResourceVoList.add(vo);
}
}
pf.clear();
}
return searchResourceVoList;
}
@SuppressWarnings("rawtypes")
public PageFinder getSearchResult(SearchResourceQuery query)
throws Exception {
if (query == null) {
return null;
}
SolrQuery solrQuery=querySolrQueryByKeyword(query,Constant.QUERY_KERWORD_WEB_TYPE);
SolrServer server = new HttpSolrServer(getSolrServer());
QueryResponse queryResponse = server.query(solrQuery);
SolrDocumentList solrDocumentList = queryResponse.getResults();
List<ResourceMarkeSearchVo> res = new ArrayList<ResourceMarkeSearchVo>();
int totalCount = (int)solrDocumentList.getNumFound();
PageFinder p = new PageFinder(query.getPageNo(), totalCount,query.getPageSize());
ResourceMarkeSearchVo vo =new ResourceMarkeSearchVo();
SolrDocument solrDocument=new SolrDocument();
for (int i = 0; i < solrDocumentList.size(); i++) {
solrDocument =solrDocumentList.get(i);
vo = toSearchResourceVo(solrDocument);
res.add(vo);
solrDocument=null;
vo=null;
}
if(query.getKeywords()!=null&&isUUID(query.getKeywords())&&query.getType()==3){
if(res.size()==0){
p=null;
p=getSearchResult_val(query);
}else{
p.setList(res);
}
}else{
p.setList(res);
}
return p;
}
/**
* <资源市场App中市场资源按学科、学段、关键字模糊查询.>
* <功能详细描述>
* @param query
* @return [参数说明]
*
*/
private SolrQuery getAppSolrQuery(SearchResourceQuery query) {
SolrQuery solrQuery = new SolrQuery();
int firstResult = (query.getPageNo() - 1) * query.getPageSize();
String queryString = "(className:" + SearchResourceVo.class.getName();
String knowsName = query.getKnowsName();
String subjectId = query.getSubjectId();
String periodId = query.getPeriodId();
String keyWords= query.getKeywords();
//包含当前节点的子节点进行查询
String[] knowsNameStrings = null;
if (StringUtils.isNotBlank(knowsName)) {
knowsNameStrings = StringUtils.split(knowsName, ",");
}
if (StringUtils.isNotEmpty(subjectId)) {
queryString += " AND subjectId:" + subjectId.trim();
}
if (StringUtils.isNotEmpty(periodId)) {
queryString += " AND peroidId:" + periodId.trim();
}
String kString = "";
if (knowsNameStrings != null) {
for (int i = 0; i < knowsNameStrings.length; i++) {
kString += "knowSeries:" + "*" + knowsNameStrings[i] + "*"
+ " OR" + " ";
if (i > 100) {
break;
}
}
kString = kString.substring(0, kString.length() - 4);
}
if (StringUtils.isNotBlank(kString)) {
queryString += " AND (" + kString + ")";
}
if (query.getType() != null) {
if (query.getType().intValue() == 100) {
queryString += " AND time:["
+ DateUtil.getDateBefore(new Date(), 3).getTime()
+ "TO" + new Date().getTime() + "]";
}
else {
queryString += " AND type:" + query.getType();
}
if (query.getType().intValue() == 3) {
if (StringUtils.isNotBlank(query.getExerciseType())
&& !query.getExerciseType().equalsIgnoreCase("全部")) {
queryString += " AND exerciseType:"
+ query.getExerciseType();
}
if (StringUtils.isNotBlank(query.getLevel())
&& !query.getLevel().equalsIgnoreCase("全部")) {
queryString += " AND exerciseLevel:" + query.getLevel();
}
}
}
if (StringUtils.isNotEmpty(keyWords)) {
query.setKeywords(keyWords.trim());
queryString += " AND (name:" + query.getKeywords().trim() + ") ";
}
queryString += ")";
solrQuery.setQuery(queryString);
if (query.getOrder() != null) {
if (query.getOrder().equals(0)) {
solrQuery.addSortField("name", ORDER.asc);
}
else if (query.getOrder().equals(1)) {
solrQuery.addSortField("name", ORDER.desc);
}
else if (query.getOrder().equals(2)) {
solrQuery.addSortField("time", ORDER.asc);
}
else if (query.getOrder().equals(3)) {
solrQuery.addSortField("time", ORDER.desc);
}
}
solrQuery.setParam("start", String.valueOf(firstResult));
solrQuery.setRows(query.getPageSize());
return solrQuery;
}
* 索引试卷的记录
*/
public void examPaper(){
// 创建客户端.
SolrServer server = new HttpSolrServer(getSolrServer());
List<SearchResourceVo> ResourceSearchVoList= new ArrayList<SearchResourceVo>();
// 索引试卷的记录.
Long examPaperCount = examPaperDao.getExamPaperNumber();
Long examPaperCountPageCount = examPaperCount / pageSize;
if (examPaperCount % pageSize > 0){
examPaperCountPageCount++;
}
for (int i = 0; i < examPaperCountPageCount; i++){
try {
ResourceSearchVoList = initExamPaperIndex(i, pageSize) ;
if(null != ResourceSearchVoList && ResourceSearchVoList.size()>0){
server.addBeans(ResourceSearchVoList);
server.commit();
ResourceSearchVoList=null;
System.out.println("试卷"+"----"+i);
}
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("索引试卷数据完成");
}
private List<SearchResourceVo> initExamPaperIndex(int page,int size) throws Exception {
List<SearchResourceVo> searchResourceVoList =new ArrayList<SearchResourceVo>();
Query query = new Query();
query.setPageNum(page);
query.setNumPerPage(size);
PageFinder<ExamPaper> pageFinder = examPaperDao.findExamPaperIndexByPage(query);
if(null != pageFinder && null != pageFinder.getDataList() && pageFinder.getDataList().size()> 0 ){
List<ExamPaper> pf = pageFinder.getDataList();
for (ExamPaper kr : pf) {
SearchResourceVo vo = convert(kr);
if(null != vo && StringUtils.isNotBlank(vo.getId())){
searchResourceVoList.add(vo);
}
}
pf.clear();
}
return searchResourceVoList;
}
@SuppressWarnings("rawtypes")
public PageFinder getSearchResult(SearchResourceQuery query)
throws Exception {
if (query == null) {
return null;
}
SolrQuery solrQuery=querySolrQueryByKeyword(query,Constant.QUERY_KERWORD_WEB_TYPE);
SolrServer server = new HttpSolrServer(getSolrServer());
QueryResponse queryResponse = server.query(solrQuery);
SolrDocumentList solrDocumentList = queryResponse.getResults();
List<ResourceMarkeSearchVo> res = new ArrayList<ResourceMarkeSearchVo>();
int totalCount = (int)solrDocumentList.getNumFound();
PageFinder p = new PageFinder(query.getPageNo(), totalCount,query.getPageSize());
ResourceMarkeSearchVo vo =new ResourceMarkeSearchVo();
SolrDocument solrDocument=new SolrDocument();
for (int i = 0; i < solrDocumentList.size(); i++) {
solrDocument =solrDocumentList.get(i);
vo = toSearchResourceVo(solrDocument);
res.add(vo);
solrDocument=null;
vo=null;
}
if(query.getKeywords()!=null&&isUUID(query.getKeywords())&&query.getType()==3){
if(res.size()==0){
p=null;
p=getSearchResult_val(query);
}else{
p.setList(res);
}
}else{
p.setList(res);
}
return p;
}
/**
* <资源市场App中市场资源按学科、学段、关键字模糊查询.>
* <功能详细描述>
* @param query
* @return [参数说明]
*
*/
private SolrQuery getAppSolrQuery(SearchResourceQuery query) {
SolrQuery solrQuery = new SolrQuery();
int firstResult = (query.getPageNo() - 1) * query.getPageSize();
String queryString = "(className:" + SearchResourceVo.class.getName();
String knowsName = query.getKnowsName();
String subjectId = query.getSubjectId();
String periodId = query.getPeriodId();
String keyWords= query.getKeywords();
//包含当前节点的子节点进行查询
String[] knowsNameStrings = null;
if (StringUtils.isNotBlank(knowsName)) {
knowsNameStrings = StringUtils.split(knowsName, ",");
}
if (StringUtils.isNotEmpty(subjectId)) {
queryString += " AND subjectId:" + subjectId.trim();
}
if (StringUtils.isNotEmpty(periodId)) {
queryString += " AND peroidId:" + periodId.trim();
}
String kString = "";
if (knowsNameStrings != null) {
for (int i = 0; i < knowsNameStrings.length; i++) {
kString += "knowSeries:" + "*" + knowsNameStrings[i] + "*"
+ " OR" + " ";
if (i > 100) {
break;
}
}
kString = kString.substring(0, kString.length() - 4);
}
if (StringUtils.isNotBlank(kString)) {
queryString += " AND (" + kString + ")";
}
if (query.getType() != null) {
if (query.getType().intValue() == 100) {
queryString += " AND time:["
+ DateUtil.getDateBefore(new Date(), 3).getTime()
+ "TO" + new Date().getTime() + "]";
}
else {
queryString += " AND type:" + query.getType();
}
if (query.getType().intValue() == 3) {
if (StringUtils.isNotBlank(query.getExerciseType())
&& !query.getExerciseType().equalsIgnoreCase("全部")) {
queryString += " AND exerciseType:"
+ query.getExerciseType();
}
if (StringUtils.isNotBlank(query.getLevel())
&& !query.getLevel().equalsIgnoreCase("全部")) {
queryString += " AND exerciseLevel:" + query.getLevel();
}
}
}
if (StringUtils.isNotEmpty(keyWords)) {
query.setKeywords(keyWords.trim());
queryString += " AND (name:" + query.getKeywords().trim() + ") ";
}
queryString += ")";
solrQuery.setQuery(queryString);
if (query.getOrder() != null) {
if (query.getOrder().equals(0)) {
solrQuery.addSortField("name", ORDER.asc);
}
else if (query.getOrder().equals(1)) {
solrQuery.addSortField("name", ORDER.desc);
}
else if (query.getOrder().equals(2)) {
solrQuery.addSortField("time", ORDER.asc);
}
else if (query.getOrder().equals(3)) {
solrQuery.addSortField("time", ORDER.desc);
}
}
solrQuery.setParam("start", String.valueOf(firstResult));
solrQuery.setRows(query.getPageSize());
return solrQuery;
}