package test;import java.io.IOException; import java.net.MalformedURLException; import java.text.SimpleDateFormat;import java.util.ArrayList; import java.util.Comparator;import java.util.Date;import java.util.List; import java.util.Map;import java.util.TreeMap;import org.apache.commons.collections.CollectionUtils;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.document.FieldType;import org.apache.lucene.util.CollectionUtil;import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrRequest;import org.apache.solr.client.solrj.SolrRequest.METHOD;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.FieldStatsInfo;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.PivotField;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.FacetParams;import org.apache.solr.common.params.GroupParams;import org.apache.solr.common.util.NamedList;import org.junit.Test; import com.xd.iis.se.pojos.IContentCommon;@SuppressWarnings("deprecation") public class SolrTest { @Test public void slorQuery() throws SolrServerException, MalformedURLException{ HttpSolrServer server = new HttpSolrServer(BigSolrURL); /* * server.setConnectionTimeout(180 * 1000); server.setSoTimeout(240 * * 1000); server.setMaxTotalConnections(1200); * server.setDefaultMaxConnectionsPerHost(100); server.setMaxRetries(3); * server.setAllowCompression(true); */ // 定义查询字符串 SolrQuery query = new SolrQuery("*:*"); // 设置查询关键字 /* query.setQuery("Content:* AND Spare3:1 "); */ // 指定查询返回字段 /* query.setParam("fl", "Content,IndexTime"); */ // 设置高亮 query.setHighlight(true).setHighlightSimplePre(" ") .setHighlightSimplePost(""); query.setParam("hl.fl", "Content");//设置高亮字段 query.setParam("fl", "ID,Published"); //排除条件 - NOT //wbQuery.addFilterQuery("OriginType:wb -Spare3:0"); //wbQuery.addFilterQuery("OriginType:wb NOT Spare3:0"); // 时间条件过滤 /* query.addFilterQuery("Content:超哥"); */ /* * query.addFilterQuery( * "Published:[1995-12-31T23:59:59.999Z TO 2016-03-06T00:00:00Z]"); */ query.addFilterQuery("Published:[* TO NOW]"); // 实现分页的查询 query.setStart(0); query.setRows(10); // 设定排序,如果需要对field进行排序就必须在schema.xml中对该field配置stored="true"属性 //set会清空原来的sort条件,add不会清空原来的,会在原来的基础上添加 sort=Published asc,Author asc(多条件排序) query.setSort(IContentCommon.IndexField.Published.getName(), SolrQuery.ORDER.asc); query.addSort(IContentCommon.IndexField.Published.getName(), SolrQuery.ORDER.asc); QueryResponse res = server.query(query); System.out.println(query); // 查询出来的结果都保存在SolrDocumentList中 SolrDocumentList sdl = res.getResults(); System.out.println("总数:" + sdl.getNumFound()); System.out.println(sdl.getMaxScore()); for (SolrDocument sd : sdl) { Object id = sd.get("ID"); // 打印高亮信息 System.out.println(res.getHighlighting().get(id).get("Content")); // System.out.println(sd.get("ID") + "#" + sd.get("Content") + "#" + sd.get("WeiboId") + "#" + sd.get("Published") + "#" + sd.get("OriginType")); /* System.out.println(sd.getFieldValue("ID")); */ Date date = (Date) sd.get("Published"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dstring = sdf.format(date); System.out.println(dstring); } } /* java对象 <---> xml文件之间的转换 JAXB注解JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON @XmlRootElement對类标识自动转化类中有get 、set方法的属性,没有get、set方法的属性无法转化 @XmlElement对属性标识,属性无需get、set方法 public Analyzer analyzer = new IKAnalyzer(true);//true开启智能分词 拿IKAnalyzer分词器为例,IKAnalyzer的切分方式是细粒度切分,当不需要智能处理时, 其就把切出的所有词输出,但若启动了智能处理,那么接下来就是要进行消歧工作。 智能分词结果: 张三|说的|确实|在理 最细粒度分词结果: 张三|三|说的|的确|的|确实|实在|在理(1) TermAttribute: 表示token的字符串信息。比如"I'm"(2) TypeAttribute: 表示token的类别信息(在上面讲到)。比如 I'm 就属于 ,有撇号的类型(3) OffsetAttribute:表示token的首字母和尾字母在原文本中的位置。比如 I'm 的位置信息就是(0,3)(4) PositionIncrementAttribute:这个有点特殊,它表示tokenStream中的当前token与前一个token在实际的原文本中相隔的词语数量。 Math.round 四舍五入Math.round(1.4)=1 Math.round(1.5)=2 Math.ceil向上取整Math.ceil(1.4)=2.0 Math.floor向下取整 http://blog.csdn.net/zwx19921215/article/details/41820483http://www.cnblogs.com/chenz/articles/3229997.htmlhttp://blog.csdn.net/huoyunshen88/article/details/38082455--------slor日期格式存储----------TrieDateField DateField 表示一个精确到毫秒的时间,值的格式是:YYYY-MM-DD T hh:mm:ss Z--------------来源类型-------------BasicContent-------字符串转换成日期工具类-----------------DateUtilsIis.parse(strDate,strPattern)------------错误码类型类-------------------ErrorCodeConstant//ArrayList线程安全List