`
hui_jing_880210
  • 浏览: 43461 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Solrj SolrQuery查询

    博客分类:
  • solr
阅读更多

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());
    }
  }
}
分享到:
评论

相关推荐

    solr-solrj 5.0.0 demo

    查询操作同样简单,可以使用`SolrQuery`类构造查询语句,并通过`server.query()`方法执行。Solr-Solrj支持多种查询语法,包括标准查询、高亮显示、 faceting(分面搜索)等高级功能。 ```java SolrQuery query = ...

    solrj的使用

    查询Solr则通过`SolrQuery`类来构造查询条件,然后调用`query()`方法: ```java SolrQuery query = new SolrQuery(); query.setQuery("title:示例"); QueryResponse response = solrServer.query(query); List...

    solr配置和solrJ的使用

    ### Solr配置与SolrJ使用详解 #### 一、Solr基本安装与配置 ...通过上述步骤,您可以完成Solr的基本安装与配置,以及实现基于SolrJ的文档索引与查询功能。这些操作为构建高效的全文搜索系统奠定了基础。

    solrj使用教程

    这个“solrj使用教程”很可能是为了帮助开发者了解如何使用SolrJ来连接、查询和管理Solr索引。下面将详细介绍SolrJ的主要功能和使用方法。 **1. 安装和导入** 首先,你需要通过Maven或Gradle等构建工具将SolrJ库...

    SolrJ使用示例

    简单的SolrJ使用示例,包括文件:News.java(PO对应的class),SolrService.java(对solrJ的包装),SolrServiceHook.java(在查询前修改SolrQuery的行为)

    Sample-SolrJ-Client:示例 SolrJ 客户端

    - **构建查询**:使用 `SolrQuery` 类来创建查询,可以设置查询字段、排序、高亮等参数。 - **执行查询**:调用 `SolrServer` 的 `query` 方法执行查询,并获取 `SolrDocumentList` 结果集。 - **处理结果**:`...

    1.4、solrj的使用_代码开始1

    文档操作是SolrJ中最基本的功能之一,主要包括文档的添加、删除、更新以及查询。 1. **添加文档** ```java public static void addDocument() throws Exception { // 创建与Solr服务器的连接 SolrServer ...

    java1.6源码-solrj.client:使用solr.solrjJava库将Java索引到Solr6.2.1的源代码

    创建一个`SolrQuery`对象,设置查询参数,然后使用`query()`方法执行查询: ```java SolrQuery query = new SolrQuery(); query.setQuery("*:*"); // 查询所有文档 query.setRows(10); // 返回前10条结果 ...

    详解java整合solr5.0之solrj的使用

    本篇文章将详细阐述如何使用SolrJ进行索引管理和查询。 首先,集成SolrJ需要将相应的依赖库引入项目。在Solr5.0之前,Solr与Java应用程序的通信主要通过`SolrServer`类,但自5.0版本后,`SolrServer`已被`...

    solr

    - `org.apache.solr.client.solrj.SolrQuery`:用于定义查询条件的对象。 - `org.apache.solr.client.solrj.response.QueryResponse`:封装查询响应结果的类。 - `org.apache.solr.common.SolrDocumentList`:存储...

    solr6工具类

    在Solr6版本中,为了更方便地进行客户端操作,通常会使用SolrJ库,这是一个Java客户端库,它允许Java开发者与Solr服务器进行交互,执行CRUD(创建、读取、更新、删除)操作以及复杂查询。本文将深入探讨Solr6工具类...

    使用java实现solr-7.1.0的api和solr最新支持的sql查询

    对于查询操作,你可以使用`SolrQuery`类来构造查询条件,然后调用`query()`方法执行查询: ```java SolrQuery query = new SolrQuery(); query.setQuery("title:solr"); QueryResponse response = client.query...

    Solr入门使用详解.zip

    此外,SolrJ还支持查询操作,通过构建SolrQuery对象并执行,你可以获取到匹配查询条件的文档结果。 在索引管理方面,Solr支持实时索引更新,这意味着你可以立即看到索引的变化。同时,Solr还提供了批量导入数据的...

    solr简单应用操作的代码部分

    SolrQuery query = new SolrQuery(); query.setQuery("example"); QueryResponse response = client.query(query); SolrDocumentList results = response.getResults(); for (SolrDocument doc : results) { // ...

    solr创建索引并查询

    - 创建`SolrQuery`对象,并设置查询字符串和其他参数。 - 常见参数包括`q`(查询字符串)、`start`(起始位置)、`rows`(返回行数)等。 2. **执行查询** - 使用`CommonsHttpSolrServer`对象的`query`方法执行...

Global site tag (gtag.js) - Google Analytics