SolrQuery有两种方式处理查询结果处理如下
第一种方式:普通方式处理查询结果
public class QueryDocsDemo { // public static final String SOLR_URL = "http://127.0.0.1:8983/solr"; public static final String SOLR_URL = "http://127.0.0.1:8983/solr"; public static void main(String[] args) throws SolrServerException, IOException { HttpSolrServer server = new HttpSolrServer(SOLR_URL); server.setMaxRetries(1); server.setMaxRetries(1); // defaults to 0. > 1 not recommended. server.setConnectionTimeout(5000); // 5 seconds to establish TCP //正常情况下,以下参数无须设置 //使用老版本solrj操作新版本的solr时,因为两个版本的javabin incompatible,所以需要设置Parser server.setParser(new XMLResponseParser()); server.setSoTimeout(1000); // socket read timeout server.setDefaultMaxConnectionsPerHost(100); server.setMaxTotalConnections(100); server.setFollowRedirects(false); // defaults to false server.setAllowCompression(true); //使用ModifiableSolrParams传递参数 // ModifiableSolrParams params = new ModifiableSolrParams(); // // 127.0.0.1:8983/solr/select?q=video&fl=id,name,price&sort=price asc&start=0&rows=2&wt=json // // 设置参数,实现上面URL中的参数配置 // // 查询关键词 // params.set("q", "video"); // // 返回信息 // params.set("fl", "id,name,price,score"); // // 排序 // params.set("sort", "price asc"); // // 分页,start=0就是从0开始,rows=5当前返回5条记录,第二页就是变化start这个值为5就可以了 // params.set("start", 2); // params.set("rows", 2); // // 返回格式 // params.set("wt", "javabin"); // QueryResponse response = server.query(params); //使用SolrQuery传递参数,SolrQuery的封装性更好 server.setRequestWriter(new BinaryRequestWriter()); SolrQuery query = new SolrQuery(); query.setQuery("video"); query.setFields("id","name","price","score"); query.setSort("price", ORDER.asc); query.setStart(0); query.setRows(2); // query.setRequestHandler("/select"); QueryResponse response = server.query( query ); // 搜索得到的结果数 System.out.println("Find:" + response.getResults().getNumFound()); // 输出结果 int iRow = 1; for (SolrDocument doc : response.getResults()) { System.out.println("----------" + iRow + "------------"); System.out.println("id: " + doc.getFieldValue("id").toString()); System.out.println("name: " + doc.getFieldValue("name").toString()); System.out.println("price: " + doc.getFieldValue("price").toString()); System.out.println("score: " + doc.getFieldValue("score")); iRow++; } }
第二种方式:采用POJOs方式处理查询结果
public class QueryBeanDemo { public static final String SOLR_URL = "http://127.0.0.1:8983/solr"; public static void main(String[] args) throws SolrServerException, IOException { // http://127.0.0.1:8983/solr/collection1/select?q=description%3A%E6%80%BB%E7%9B%AE%E6%A0%87&facet=true&facet.field=author_s HttpSolrServer server = new HttpSolrServer(SOLR_URL); server.setMaxRetries(1); server.setMaxRetries(1); // defaults to 0. > 1 not recommended. server.setConnectionTimeout(5000); // 5 seconds to establish TCP // server.setRequestWriter(new BinaryRequestWriter()); SolrQuery query = new SolrQuery(); query.setQuery("description:改革"); query.setStart(0); query.setRows(2); query.setFacet(true); query.addFacetField("author_s"); QueryResponse response = server.query(query); // 搜索得到的结果数 System.out.println("Find:" + response.getResults().getNumFound()); // 输出结果 int iRow = 1; //response.getBeans存在BUG,将DocumentObjectBinder引用的Field应该为 org.apache.solr.client.solrj.beans.Field SolrDocumentList list = response.getResults(); DocumentObjectBinderL binder = new DocumentObjectBinderL(); List<NewsBean> beanList=binder.getBeans(NewsBean.class, list); for(NewsBean news:beanList){ System.out.println(news.getId()); } for (SolrDocument doc : response.getResults()) { System.out.println("----------" + iRow + "------------"); System.out.println("id: " + doc.getFieldValue("id").toString()); System.out.println("name: " + doc.getFieldValue("name").toString()); iRow++; } for (FacetField ff : response.getFacetFields()) { System.out.println(ff.getName() + "," + ff.getValueCount() + "," + ff.getValues()); } } }
相关推荐
solrj的facet查询总结
solrj工具类封装,包括条件批量查询,批量增删改,分段修改。
主要讲解了 solr客户端如何调用带账号密码的solr服务器调用,实现添加索引和查询索引,以及分组查询
放了SolrJ6.3.0所有web工程下的Jar包。solr-solrj6.3.0.jar等。放了SolrJ6.3.0所有web工程下的Jar包。放了SolrJ6.3.0所有web工程下的Jar包。
简单的SolrJ使用示例,包括文件:News.java(PO对应的class),SolrService.java(对solrJ的包装),SolrServiceHook.java(在查询前修改SolrQuery的行为)
压缩文件里面有solr-solrj-4.10.3.jar和solr-solrj-5.0.0.jar两个jar
solr-solrj-4.9.0.jar
solr-solrj 5.0.0 和自己搭建的solr服务交互
solrJ是Java连接solr进行查询检索和索引更新维护的jar包。
solr-solrj-4.10.3.jar。
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。...Solrj 是访问 Solr 的 Java 客户端,它提供添加、更新和查询Solr 索引的接口。http://wiki.chenlb.com/solr/doku.php?id=solrj
solrj使用教程
solr-solrj-4.4.0.jar
Solrj 中文教程
solr-solrj-6.6.0.jar
solr详细配置教程与solrj的使用
solr部署在tomcat势必要设置用户权限,所以客户端solrj在创建连接的时候也需要用户名加密码
java大数据开发中solrJ所需要的核心包.................
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文
里面有非常详细的说明交你怎么使用solrj客户端来操作solrAPI