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 { //指定solr服务器的地址 /* private final static String URL = "http://192.168.20.195:8084/solr/collection1";*/ private final static String URL = "http://192.168.20.195:8084/solr"; //微名人 private final static String BigSolrURL="http://solr-24h.wyq.cn/solr"; /*private final static String URL = "http://192.168.20.196:8081/solr" ; //事件分析 */ @Test public void slorQuery() throws SolrServerException, MalformedURLException{ /* * //项目取得HttpSolrServer方式 HttpSolrServer * * url配置在weibo_analysis.properties文件中 * server=SolrWbFactory.getSolrServerComment(); * weibo_comment_solr=http://192.168.20.195:8084/solr/comment * weibo_content_comment_solr=http://192.168.20.195:8084/solr/all * weibo_content_slor=http://192.168.20.195:8084/solr/collection1 */ 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("<span class='red'>") .setHighlightSimplePost("</span>"); 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的切分方式是细粒度切分,当不需要智能处理时, 其就把切出的所有词输出,但若启动了智能处理,那么接下来就是要进行消歧工作。
Solr API例子详解
最新推荐文章于 2024-06-25 10:33:00 发布
本文详细介绍了Solr搜索引擎的API使用,涵盖了各种操作和查询技巧,帮助读者深入理解Solr API的应用。
摘要由CSDN通过智能技术生成