`
xinyangwjb
  • 浏览: 81762 次
  • 性别: Icon_minigender_1
  • 来自: 信阳
社区版块
存档分类
最新评论

solr学习三(测试类,含普通与ExtractingRequestHandler测试)

 
阅读更多

solr客户端基本是配置出来的,服务端可以对其进行测试,我使用的是solrj服务端。
如果初学solr,先使用普通的测试类:

	import java.io.IOException;  
	import java.util.ArrayList;  
	import java.util.Collection;  
	import java.util.Date;
	import org.apache.solr.client.solrj.SolrQuery;  
	import org.apache.solr.client.solrj.SolrServer;  
	import org.apache.solr.client.solrj.SolrServerException;  
	import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;  
	import org.apache.solr.client.solrj.request.AbstractUpdateRequest;  
	import org.apache.solr.client.solrj.request.UpdateRequest;  
	import org.apache.solr.client.solrj.response.QueryResponse;  
	import org.apache.solr.common.SolrInputDocument;  
	  
	public class SolrTest {
	  
	    public static void main(String[] args) throws IOException,  
	            SolrServerException {  
	  
	        String urlString = " http://localhost:8393/keyPlace";  
	        SolrServer server = new CommonsHttpSolrServer(urlString);  
	        testAdd(server);
	        testQuery(server);
	        
	    }
	    static void testAdd(SolrServer server) throws IOException,  
        SolrServerException {
	    	SolrInputDocument doc1 = new SolrInputDocument();  
	        doc1.addField("id", 456);  
	        doc1.addField("orgId", "33030300310"); 
	        doc1.addField("name", "张三"); 
	        doc1.addField("key", "1");
	        doc1.addField("createDate", new Date());
	        SolrInputDocument doc2 = new SolrInputDocument();  
	        doc2.addField("id", 123);
	        doc2.addField("orgId", "33030300310"); 
	        doc2.addField("name", "李四");
	        doc2.addField("key", "2");
	        doc2.addField("createDate", new Date());
	        Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();  
	        docs.add(doc1);  
	        docs.add( doc2 );  
	        server.add(docs);  
	        UpdateRequest req = new UpdateRequest();  
	        req.setAction(AbstractUpdateRequest.ACTION.COMMIT, false, false);  
	        req.add(docs);  
	        req.process(server);  
	    }
	    
	    static void testQuery(SolrServer server) throws IOException,  
        SolrServerException {
	    	SolrQuery query = new SolrQuery();  
	  	  
	        query.setQuery("name:张三");  
	        query.setHighlight(true).setHighlightSnippets(1);                                                     
	  
	        QueryResponse ret = server.query(query);  
	  
	        System.out.println(ret);  
	    	
	    }

} 

如果服务端配置了ExtractingRequestHandler,可使用下面的类进行测试:
import java.io.File;
import java.io.IOException;

import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;

import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.handler.extraction.ExtractingParams;

public class ExtractTest {

		public static void main(String[] args) {
		    try {
		      String urlString = "http://localhost:8393/sourcePool/"; 
			  SolrServer solr = new CommonsHttpSolrServer(urlString);
		      String fileName = "c:/slor1.doc"; 
		      String solrId = "2"; 
		      String resoucePoolid = "2";
		      
		      indexFilesSolrCell(fileName, solrId , resoucePoolid , solr);
		      testQuery(solr);
		    } catch (Exception ex) {
		      System.out.println(ex.toString());
		    }
		  }
		  
		  /**
		   * Method to index all types of files into Solr. 
		   * @throws IOException
		   * @throws SolrServerException
		   */
		  public static void indexFilesSolrCell(String fileName, String solrId , String resoucePoolid , SolrServer solr) 
		    throws IOException, SolrServerException {
		    
		    ContentStreamUpdateRequest up 
		      = new ContentStreamUpdateRequest("/update/extract");
		    
		    ModifiableSolrParams p = new ModifiableSolrParams();
		    p.add(ExtractingParams.LITERALS_PREFIX + "orgids" , "33010033001");
		    p.add(ExtractingParams.LITERALS_PREFIX + "orgids" , "33010033002");
		    p.add(ExtractingParams.LITERALS_PREFIX + "orgids" , "33010033003");
		    up.setParams(p);
		    
		    up.addFile(new File(fileName));
		    up.setParam(ExtractingParams.LITERALS_PREFIX + "id", solrId);
		    up.setParam(ExtractingParams.LITERALS_PREFIX + "resoucepoolid", resoucePoolid);
		    up.setParam(ExtractingParams.LITERALS_PREFIX + "orgid", "33010033001");
		    up.setParam(ExtractingParams.LITERALS_PREFIX + "name", "33010033001");
		    up.setParam(ExtractingParams.LITERALS_PREFIX + "releaseunit", "33010033001");
		    up.setParam(ExtractingParams.LITERALS_PREFIX + "releasetime", "2011-02-12");

		    up.setParam(ExtractingParams.UNKNOWN_FIELD_PREFIX, "attr_");
		    
		    //up.setParam("fmap.content", "filestream");
		    
		    up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
		    
		    solr.request(up);
		    
		    
		  }
		  
		  static void testQuery(SolrServer solr)  throws IOException, SolrServerException {
			  String fileStream = "filestream:老婆的老公";
			  String field = "orgid:33010033001";
			  QueryResponse rsp = solr.query(new SolrQuery(field));
			    System.out.println(rsp); 
		  }
}

测试类如果出错,基本都是jar包引入的问题,jar如果引入可参见我的另一篇博客:http://xinyangwjb.iteye.com/blog/1405713
分享到:
评论
2 楼 xinyangwjb 2012-05-05  
solr官网例子默认编码是UTF-8,你的项目是不是UTF-8,如果是,就全文搜索下solr的xml文件看有没有encode或者encoding字段,看看是什么编码格式,好久没弄了,忘了哪里配置编码格式了。
1 楼 wjx 2012-05-05  
up.setParam设置的内容如果有中文的话会乱码,不知lz是否解决了此问题?

相关推荐

    solr7.0性能测试报告

    1. 在 50x100 并发写入测试中,单节点的磁盘使用和 IO 情况与集群模式下有所不同。 2. 对比单节点和 Solr on HDFS 的并发写入性能,单节点的 CPU 监控和磁盘 IO 数据显示,单节点在写入性能上接近集群模式的两倍。 3...

    solr的学习

    #### 三、Solr 的安装与配置 - **下载 Solr** - 最新版本为 5.2.1,本教程使用版本 4.10.3。 - 下载地址:[http://archive.apache.org/dist/lucene/solr/](http://archive.apache.org/dist/lucene/solr/) - ...

    solr压力测试报告

    - **测试目的**:通过对单节点Solr与基于Hadoop分布式文件系统(HDFS)的Solr Cloud集群进行压力测试,分析两者在读写性能上的差异,从而为生产环境中的Solr部署提供参考。 #### 二、测试环境配置 - **单节点Solr**...

    Solr索引测试报告

    Solr 索引 测试报告 性能

    solr6工具类

    本文将深入探讨Solr6工具类的使用方法,包括条件查询、结果高亮,并结合测试对象和测试类进行详细解析。 1. **SolrJ简介** SolrJ提供了一组接口和类,使得开发者能够轻松地创建、发送和解析Solr请求。它通过...

    SOLR的学习资料

    **SOLR学习指南** Apache SOLR是一款开源的企业级全文搜索引擎,它被广泛应用于网站内容检索、电商商品搜索、文档数据库搜索等领域。SOLR以其高效、可扩展性以及丰富的特性和配置选项而受到广大开发者的青睐。在这...

    SolrTest solr测试工程

    SolrTest是一个针对Apache Solr的测试工程,其主要目的是为了验证和演示Solr的核心...综上所述,SolrTest工程是一个全面的测试平台,涵盖了Solr从数据导入到查询展现的多个关键环节,是学习和验证Solr功能的宝贵资源。

    solr学习资料

    【Solr 学习资料详解】 Solr 是一个基于 Apache Lucene 的全文搜索服务器,它为企业提供了高效、可扩展的搜索解决方案。Solr 不仅提供了丰富的查询语言,还优化了索引和搜索性能,使得在大型网站、电子商务平台等...

    SOLR学习笔记

    #### 三、安装与配置Solr 为了使用 Solr,需要准备以下环境: - **Java 1.5 或更高版本**:Solr 基于 Java 实现,因此需要 Java 运行环境。 - **Ant 1.6.x 或更高版本**:用于构建 Solr 和示例应用。 - **Web ...

    solr学习入门教程

    #### 三、Solr与Lucene的主要差异 尽管Solr基于Lucene,但它不仅仅是对Lucene的简单封装。Solr引入了诸多额外的功能和服务,如Web服务接口、多语言支持、更复杂的数据类型处理、高可用性及性能优化策略。这些特性使...

    solr 学习笔记

    solr 学习笔记主要涵盖了 Solr 的基本安装与配置,以及 Solr 服务器复制的配置,这些都是初学者需要掌握的基础知识。 Solr 是一款基于 Lucene 的全文搜索引擎,广泛应用于大数据检索和文本分析。在安装 Solr 时,...

    solr学习笔记

    ### Solr 学习笔记:关键命令使用说明 Solr 是一个开源的、高性能的全文检索引擎,基于 Java 开发,常被用于大型网站的搜索系统。本文将围绕给定内容中的关键命令进行详细的解析,主要包括 Solr 的启动、集群管理、...

    solr测试数据,数据文件

    solr测试数据,数据文件

    Solr入门教程-solr学习入门经典教程

    solr学习入门经典教程,赶紧学习吧,从solr的搭建讲起,中文分词器的配置

    Solr学习笔记。。

    三、Solr配置 Solr的核心配置文件包括`solrconfig.xml`和`schema.xml`,它们决定了Solr的行为和索引结构。 1. `solrconfig.xml` - `dataDir`:定义索引存储位置,默认为`solr/data`,可通过配置指定其他路径,如`...

    Solr学习笔记(三)Solr客户端开发实例

    Solr学习笔记(三)——Solr客户端开发实例 在本文中,我们将深入探讨Solr客户端的开发,以便更好地理解如何在实际项目中利用Solr的强大功能。Solr是一款开源的全文搜索引擎,提供了高效的搜索和索引功能。通过Solr...

    solr4.10.2与tomcat6的整合

    #### 三、配置 Solr 与 Tomcat 的整合 ##### 3.1 配置 solr.xml - 在 Tomcat 的配置目录 `conf/Catalina/localhost` 下创建一个名为 `solr.xml` 的文件。 - 编辑该文件,添加以下内容: ```xml ...

    Solr学习总结配置方法

    【Solr学习总结配置方法】 Solr是一款基于Apache Lucene的全文检索服务器,它提供了分布式、可扩展且高度可用的搜索和分析能力。Solr的主要特点是简化了索引创建和查询服务,使得开发者只需编写少量代码即可实现...

    solr与tomcat整合

    标题“solr与tomcat整合”涉及的是将Apache Solr搜索引擎集成到Apache Tomcat应用服务器的过程。Solr是一款基于Lucene的开源搜索平台,而Tomcat是Java Servlet和JavaServer Pages的容器。整合这两者可以方便地在Web...

    solr(solr-9.0.0-src.tgz)源码

    4. **关键类与接口** - `SolrCore`: 代表Solr的单一索引实例,包含了索引、查询和其他核心功能。 - `SolrRequestHandler`: 处理Solr请求的接口,用于定义不同的查询和更新处理逻辑。 - `...

Global site tag (gtag.js) - Google Analytics