zoukankan      html  css  js  c++  java
  • SolrJ API 官方文档最佳实践

    以下内容译自Solr Wiki官方文档,版权没有,随意转载.

    Solrj 是一个访问solr的Java客户端。它提供了一个java接口用于添加更新和查询solr索引。本页面介绍SolrJ最新版本1.4在Solr 1.4.x及其在附带war包中的使用,关于SolrJ在Solr1.3和Solr1.2的使用教程请移步Solrj1.3 Wiki

    SolrJ/Solr版本交叉的兼容性说明

    SolrJ通常保持向后兼容性,因此你可以在较老版本的Solr上使用较新版本的SolrJ,或者在较新版本的Solr上使用较老版本的SolrJ。但是有些细微的区别需要注意:

    如果你混合使用1.x和较新的主版本,必须设置响应XML解析器,因为两个版本使用了不兼容的Java bin。

    server.setParser(new XMLResponseParser());

    只要不将发起请求改变成二进制流,混合使用3.x和4.x或者混合之后的版本,通常没有太大问题(在SOLR-3038中有关于将默认请求改为二进制流的讨论)。如果这样做,3.x和更高版本的兼容性问题需要通过发起一个明确描述XML的版本的请求来决定。在SOLR-4820中有关于自动传输检测这种行为的讨论。

    Java bin的格式是个例外,它在各个大版本之间互不兼容。不能使用javabin在1.4.1和以上版本或者3.1和更高版本之间通信(因为在协议中改变了字符编码)。也不能采用java bin的方式用于4.x的客户端和包括3.x在内之前版本的服务端进行通信,因为这样的改变会妨碍服务url的映射,也违反了向后不兼容的协议。在这种情况下,仅仅是不提供SolrServer的请求写入流,仍然可以得到默认的(XML)线性格式。

    如果使用较老版本的SolrJ和4.x或者更新的Solr服务,很大可能是因为想从4.0的SolrJ中得到在之前的老版本的SolrQuery对象中所没有的setRequestHandler方法。值得注意的是,这个方法尤为重要当SolrJ比Solr要更新的时候。

    设置Classpath

    SolrJ用到的jar包分布在以下几个文件夹:/dist、/dist/solrj-lib 和 /lib,使用SolrJ最小可用jar包集合(可根据使用场景获取更多依赖)清单如下:

    /dist文件夹

    • apache-solr-solrj-*.jar

    /dist/solrj-lib文件夹

    • commons-codec-1.3.jar
    • commons-httpclient-3.1.jar
    • commons-io-1.4.jar
    • jcl-over-slf4j-1.5.5.jar
    • slf4j-api-1.5.5.jar

    /lib文件夹

    • slf4j-jdk14-1.5.5.jar

    Maven

    SolrJ可以从官方Maven库中获得,在pom.xml中添加如下依赖即可使用SolrJ相关API:

    <dependency>
       <artifactId>solr-solrj</artifactId>
       <groupId>org.apache.solr</groupId>
       <version>1.4.0</version>
       <type>jar</type>
       <scope>compile</scope>
    </dependency>

     

    如果需要使用EmbeddedSolrServer模式,同时需要添加Solr Core的依赖:

    <dependency>
        <artifactId>solr-core</artifactId>
        <groupId>org.apache.solr</groupId>
        <version>1.4.0</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>

    另外,使用EmbeddedSolrServer时需要注意SolrJ依赖Servlet API,通常Servlet API已经作为Web项目的基础依赖包含在项目中,但即时是命令行项目,同样需要包含Servlet API依赖:

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>

    如果程序中抛出NoClassDefFoundError异常,则可能需要如下依赖:

    <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-simple</artifactId>
         <version>1.5.6</version>
    </dependency>

    如果使用Solr-SolrJ 1.4.1和Slf4j-simple 1.5.6,可能会由于slf4j-api的改变引起IllegalAccessError,SolrJ建议使用slf4j-api 1.5.5和slf4j-simple 1.5.5或者其他的适当版本。

    HttpSolrServer

  • 相关阅读:
    我的WCF之旅(1):创建一个简单的WCF程序
    网页设计中颜色的搭配
    CSS HACK:全面兼容IE6/IE7/IE8/FF的CSS HACK
    UVa 1326 Jurassic Remains
    UVa 10340 All in All
    UVa 673 Parentheses Balance
    UVa 442 Matrix Chain Multiplication
    UVa 10970 Big Chocolate
    UVa 679 Dropping Balls
    UVa 133 The Dole Queue
  • 原文地址:https://www.cnblogs.com/xmc0551/p/5038456.html
Copyright © 2011-2022 走看看