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;
- }
- }