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()); } } }
相关推荐
查询操作同样简单,可以使用`SolrQuery`类构造查询语句,并通过`server.query()`方法执行。Solr-Solrj支持多种查询语法,包括标准查询、高亮显示、 faceting(分面搜索)等高级功能。 ```java SolrQuery query = ...
查询Solr则通过`SolrQuery`类来构造查询条件,然后调用`query()`方法: ```java SolrQuery query = new SolrQuery(); query.setQuery("title:示例"); QueryResponse response = solrServer.query(query); List...
### Solr配置与SolrJ使用详解 #### 一、Solr基本安装与配置 ...通过上述步骤,您可以完成Solr的基本安装与配置,以及实现基于SolrJ的文档索引与查询功能。这些操作为构建高效的全文搜索系统奠定了基础。
这个“solrj使用教程”很可能是为了帮助开发者了解如何使用SolrJ来连接、查询和管理Solr索引。下面将详细介绍SolrJ的主要功能和使用方法。 **1. 安装和导入** 首先,你需要通过Maven或Gradle等构建工具将SolrJ库...
简单的SolrJ使用示例,包括文件:News.java(PO对应的class),SolrService.java(对solrJ的包装),SolrServiceHook.java(在查询前修改SolrQuery的行为)
- **构建查询**:使用 `SolrQuery` 类来创建查询,可以设置查询字段、排序、高亮等参数。 - **执行查询**:调用 `SolrServer` 的 `query` 方法执行查询,并获取 `SolrDocumentList` 结果集。 - **处理结果**:`...
文档操作是SolrJ中最基本的功能之一,主要包括文档的添加、删除、更新以及查询。 1. **添加文档** ```java public static void addDocument() throws Exception { // 创建与Solr服务器的连接 SolrServer ...
创建一个`SolrQuery`对象,设置查询参数,然后使用`query()`方法执行查询: ```java SolrQuery query = new SolrQuery(); query.setQuery("*:*"); // 查询所有文档 query.setRows(10); // 返回前10条结果 ...
本篇文章将详细阐述如何使用SolrJ进行索引管理和查询。 首先,集成SolrJ需要将相应的依赖库引入项目。在Solr5.0之前,Solr与Java应用程序的通信主要通过`SolrServer`类,但自5.0版本后,`SolrServer`已被`...
- `org.apache.solr.client.solrj.SolrQuery`:用于定义查询条件的对象。 - `org.apache.solr.client.solrj.response.QueryResponse`:封装查询响应结果的类。 - `org.apache.solr.common.SolrDocumentList`:存储...
在Solr6版本中,为了更方便地进行客户端操作,通常会使用SolrJ库,这是一个Java客户端库,它允许Java开发者与Solr服务器进行交互,执行CRUD(创建、读取、更新、删除)操作以及复杂查询。本文将深入探讨Solr6工具类...
对于查询操作,你可以使用`SolrQuery`类来构造查询条件,然后调用`query()`方法执行查询: ```java SolrQuery query = new SolrQuery(); query.setQuery("title:solr"); QueryResponse response = client.query...
此外,SolrJ还支持查询操作,通过构建SolrQuery对象并执行,你可以获取到匹配查询条件的文档结果。 在索引管理方面,Solr支持实时索引更新,这意味着你可以立即看到索引的变化。同时,Solr还提供了批量导入数据的...
SolrQuery query = new SolrQuery(); query.setQuery("example"); QueryResponse response = client.query(query); SolrDocumentList results = response.getResults(); for (SolrDocument doc : results) { // ...
- 创建`SolrQuery`对象,并设置查询字符串和其他参数。 - 常见参数包括`q`(查询字符串)、`start`(起始位置)、`rows`(返回行数)等。 2. **执行查询** - 使用`CommonsHttpSolrServer`对象的`query`方法执行...