package com.fjsh.SearchJobsFirst;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.swing.RepaintManager;
import javax.swing.text.html.parser.Entity;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.FacetField;
import org.apache.solr.client.solrj.response.FacetField.Count;
import org.apache.solr.client.solrj.response.Group;
import org.apache.solr.client.solrj.response.GroupCommand;
import org.apache.solr.client.solrj.response.GroupResponse;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.params.GroupParams;
import org.apache.solr.common.params.ModifiableSolrParams;
public class SearchJobs { private static String url = "jdbc:sqlserver://192.168.2.106:1433;DatabaseName=JobsOtherweb51jobDB"; private static String user = "sa"; private static String password = "sa"; private String Corenum; public static int JobsId = 219443; public SolrServer solrServer = null; public SolrServer createSolrServer() { HttpSolrServer solr = null; try { solr = new HttpSolrServer( "http://192.168.2.106:8080/solr/JobsOtherWeb0"); solr.setConnectionTimeout(100); solr.setDefaultMaxConnectionsPerHost(100); solr.setMaxTotalConnections(100); } catch (Exception e) { System.out.println("请检查tomcat服务器或端口是否开启!"); e.printStackTrace(); } return solr; } public void querytop20() { solrServer = createSolrServer(); System.out.println("简单查询取出前二十个"); String dtStart = new SimpleDateFormat("yyyyMMddHHmmssSSS") .format(new Date()); System.out.println("开始时间:" + dtStart + "\n"); try { SolrQuery query = new SolrQuery(); query.setQuery("jobsName:计算机"); query.setRows(20); SolrDocumentList docs = solrServer.query(query).getResults(); for (SolrDocument sd : docs) { System.out.println(sd.getFieldValue("jobsName")); System.out.println(sd.getFieldValue("publishDate")); } solrServer.shutdown(); String dtEnd = new SimpleDateFormat("yyyyMMddHHmmssSSS") .format(new Date()); System.out.println(query); } catch (SolrServerException e) { e.printStackTrace(); } } public void DeleteByQuery() { solrServer = createSolrServer(); try { solrServer.deleteByQuery("jobsName:高级技术支持"); solrServer.commit(); } catch (Exception e) { e.printStackTrace(); } } public void DeleteByQueryJobsId() { solrServer = createSolrServer(); try { solrServer.deleteById("515792"); solrServer.commit(); } catch (Exception e) { e.printStackTrace(); } } public QueryResponse Search(String[] field, String[] key, int start, int count, String[] sortfield, Boolean[] flag, Boolean hightlight) { solrServer = createSolrServer(); if (null == field || null == key || field.length != key.length) { return null; } if (null == sortfield || null == flag || sortfield.length != flag.length) { return null; } SolrQuery query = null; try { query = new SolrQuery(field[0] + ":" + key[0]); for (int i = 0; i < field.length; i++) { query.addFilterQuery(field[i] + ":" + key[i]); } query.setStart(start); query.setRows(count); for (int i = 0; i < sortfield.length; i++) { if (flag[i]) { query.addSortField(sortfield[i], SolrQuery.ORDER.asc); } else { query.addSortField(sortfield[i], SolrQuery.ORDER.desc); } } if (null != hightlight) { query.setHighlight(true); query.addHighlightField("jobsName"); query.setHighlightSimplePre("<font color=\"red\">"); query.setHighlightSimplePost("</font>"); query.setHighlightSnippets(1); query.setHighlightFragsize(1000); } } catch (Exception e) { e.printStackTrace(); } QueryResponse rsp = null; try { rsp = solrServer.query(query); } catch (Exception e) { e.printStackTrace(); return null; } return rsp; } public String[] autoComplete(String field, String prefix, int min) { solrServer = createSolrServer(); String words[] = null; StringBuffer sb = new StringBuffer(""); SolrQuery query = new SolrQuery(field + ":" + prefix); QueryResponse rsp = new QueryResponse(); try { query.setFacet(true); query = new SolrQuery(field + ":" + prefix); query.setFacetPrefix(prefix); query.addFacetField(field); rsp = solrServer.query(query); } catch (Exception e) { e.printStackTrace(); return null; } if (null != rsp) { FacetField ff = rsp.getFacetField(field); List<Count> countList = ff.getValues(); if (null == countList) { return null; } for (int i = 0; i < countList.size(); i++) { String tmp[] = countList.get(i).toString().split(" "); if (tmp[0].length() < 2) { continue; } sb.append(tmp[0] + " "); min--; if (min == 0) { break; } } words = sb.toString().split(" "); } else { return null; } return words; } public void SearchGroup(String QUERY_CONTENT,int QUERY_ROWS, Boolean GROUP, String GROUP_FIELD,String GROUP_LIMIT) { SolrServer server = createSolrServer(); SolrQuery param = new SolrQuery(); param.setQuery("jobsName:"+QUERY_CONTENT); param.setRows(QUERY_ROWS); param.setParam(GroupParams.GROUP, GROUP); param.setParam(GroupParams.GROUP_FIELD, GROUP_FIELD); param.setParam(GroupParams.GROUP_LIMIT, GROUP_LIMIT); QueryResponse response = null; try { response = server.query(param); } catch (SolrServerException e) { } Map<String, Integer> info = new HashMap<String, Integer>(); GroupResponse groupResponse = response.getGroupResponse(); if(groupResponse != null) { List<GroupCommand> groupList = groupResponse.getValues(); for(GroupCommand groupCommand : groupList) { List<Group> groups = groupCommand.getValues(); for(Group group : groups) { info.put(group.getGroupValue(), (int)group.getResult().getNumFound()); System.out.println(group.getGroupValue()+"---"+group.getResult().getNumFound()); } } } } public void FacetFieldQuery() throws Exception { solrServer = createSolrServer(); SolrQuery query = new SolrQuery(); query.setQuery("jobsName:计算机维护"); query.setFacet(true); query.addFacetField(new String[] { "salary", "publishDate", "educateBackground", "jobExperience", "companytype", "jobsType" }); query.setFacetLimit(10); query.setFacetMissing(false); query.setFacetMinCount(1); QueryResponse response = solrServer.query(query); System.out.println("查询时间:" + response.getQTime()); List<FacetField> facets = response.getFacetFields(); for (FacetField facet : facets) { System.out.println(facet.getName()); System.out.println("----------------"); List<Count> counts = facet.getValues(); for (Count count : counts) { System.out.println(count.getName() + ":" + count.getCount()); } System.out.println(); } } public void FacetFieldQueryDate() throws Exception { solrServer = createSolrServer(); SolrQuery query = new SolrQuery(); query.setQuery("jobsName:计算"); query.setFacet(true); query.setFacetLimit(10); query.setFacetMissing(false); query.setFacetMinCount(1); query.addFacetField(new String[] { "salary", "educateBackground", "jobExperience", "companytype", "jobsType" }); SimpleDateFormat time0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat time1 = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat time2 = new SimpleDateFormat("HH:mm:ss"); Calendar c = Calendar.getInstance(); c.setTime(time0.parse(time1.format(c.getTime()) + " 23:59:59")); Date date = c.getTime(); String dateNow = time1.format(date) + "T" + time2.format(date) + "Z"; c.setTime(time0.parse(time1.format(c.getTime()) + " 23:59:59")); c.add(Calendar.DATE, -1); date = c.getTime(); query.addFacetQuery("publishDate:[" + time1.format(date) + "T" + time2.format(date) + "Z" + " TO " + dateNow + "]"); c.add(Calendar.DATE, -2); date = c.getTime(); query.addFacetQuery("publishDate:[" + time1.format(date) + "T" + time2.format(date) + "Z" + " TO " + dateNow + "]"); c.add(Calendar.DATE, -4); date = c.getTime(); query.addFacetQuery("publishDate:[" + time1.format(date) + "T" + time2.format(date) + "Z" + " TO " + dateNow + "]"); c.add(Calendar.DATE, -7); date = c.getTime(); query.addFacetQuery("publishDate:[" + time1.format(date) + "T" + time2.format(date) + "Z" + " TO " + dateNow + "]"); c.add(Calendar.DATE, -16); date = c.getTime(); query.addFacetQuery("publishDate:[" + time1.format(date) + "T" + time2.format(date) + "Z" + " TO " + dateNow + "]"); c.add(Calendar.DATE, -30); date = c.getTime(); query.addFacetQuery("publishDate:[" + time1.format(date) + "T" + time2.format(date) + "Z" + " TO " + dateNow + "]"); QueryResponse response = solrServer.query(query); System.out.println("查询时间:" + response.getQTime()); List<FacetField> facets = response.getFacetFields(); for (FacetField facet : facets) { System.out.println(facet.getName()); System.out.println("----------------"); List<Count> counts = facet.getValues(); for (Count count : counts) { System.out.println(count.getName() + ":" + count.getCount()); } System.out.println(); } Map<String, Integer> maps = response.getFacetQuery(); for (Entry<String, Integer> entry : maps.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } } public QueryResponse searchResult(String[] field, String[] key, int start, int count, String[] sortfield, Boolean[] flag, Boolean hightlight) throws Exception { solrServer = createSolrServer(); if (null == field || null == key || field.length != key.length) { return null; } SolrQuery query = null; try { query = new SolrQuery(field[0] + ":" + key[0]); for (int i = 0; i < field.length; i++) { query.addFilterQuery(field[i] + ":" + key[i]); } query.setStart(start); query.setRows(count); if (!(null == sortfield || null == flag || sortfield.length != flag.length)) { for (int i = 0; i < sortfield.length; i++) { if (flag[i]) { query.addSortField(sortfield[i], SolrQuery.ORDER.asc); } else { query.addSortField(sortfield[i], SolrQuery.ORDER.desc); } } } if (null != hightlight) { query.setHighlight(true); query.addHighlightField("jobsName"); query.setHighlightSimplePre("<font color=\"red\">"); query.setHighlightSimplePost("</font>"); query.setHighlightSnippets(1); query.setHighlightFragsize(1000); } } catch (Exception e) { e.printStackTrace(); } query.setFacet(true); query.setFacetLimit(10); query.setFacetMissing(false); query.setFacetMinCount(1); query.addFacetField(new String[] { "salary", "educateBackground", "jobExperience", "companytype", "jobsType" }); SimpleDateFormat time0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat time1 = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat time2 = new SimpleDateFormat("HH:mm:ss"); Calendar c = Calendar.getInstance(); c.setTime(time0.parse(time1.format(c.getTime()) + " 23:59:59")); Date date = c.getTime(); String dateNow = time1.format(date) + "T" + time2.format(date) + "Z"; c.setTime(time0.parse(time1.format(c.getTime()) + " 23:59:59")); c.add(Calendar.DATE, -1); date = c.getTime(); query.addFacetQuery("publishDate:[" + time1.format(date) + "T" + time2.format(date) + "Z" + " TO " + dateNow + "]"); c.add(Calendar.DATE, -2); date = c.getTime(); query.addFacetQuery("publishDate:[" + time1.format(date) + "T" + time2.format(date) + "Z" + " TO " + dateNow + "]"); c.add(Calendar.DATE, -4); date = c.getTime(); query.addFacetQuery("publishDate:[" + time1.format(date) + "T" + time2.format(date) + "Z" + " TO " + dateNow + "]"); c.add(Calendar.DATE, -7); date = c.getTime(); query.addFacetQuery("publishDate:[" + time1.format(date) + "T" + time2.format(date) + "Z" + " TO " + dateNow + "]"); c.add(Calendar.DATE, -16); date = c.getTime(); query.addFacetQuery("publishDate:[" + time1.format(date) + "T" + time2.format(date) + "Z" + " TO " + dateNow + "]"); c.add(Calendar.DATE, -30); date = c.getTime(); query.addFacetQuery("publishDate:[" + time1.format(date) + "T" + time2.format(date) + "Z" + " TO " + dateNow + "]"); QueryResponse rsp = null; try { rsp = solrServer.query(query); System.out.println("此次查询时间qtime :" + rsp.getQTime()); List<FacetField> facets = rsp.getFacetFields(); for (FacetField facet : facets) { System.out.println(facet.getName()); System.out.println("----------------"); List<Count> counts = facet.getValues(); for (Count countitem : counts) { System.out.println(countitem.getName() + ":" + countitem.getCount()); } System.out.println(); } Map<String, Integer> maps = rsp.getFacetQuery(); for (Entry<String, Integer> entry : maps.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } SolrDocumentList docs = rsp.getResults(); for (SolrDocument doc : docs) { System.out.println("-----"); System.out.println(doc.getFieldValue("jobsName")); System.out.println(doc.getFieldValue("publishDate")); } } catch (Exception e) { e.printStackTrace(); return null; } return rsp; } }
相关资源:敏捷开发V1.0.pptx