利用SolrJ操作solr API

来源:互联网 发布:杭州博远软件 编辑:程序博客网 时间:2024/05/24 02:25

使用SolrJ操作Solr会比利用httpClient来操作Solr要简单。SolrJ通过封装httpClient方法,来操作solr的API的。即SolrJ底层还是通过使用httpClient中的方法来完成Solr的操作

添加jar包:首先,你需要在你的web项目中添加SolrJ需要的jar包,这些jar包在你所下载的Solr包中都可以找到(我下载的是solr-4.10.0.zip),包括:

  • apache-solr-solrj-4.10.0.jar   : solr-4.10.0\dist文件夹下
  • apache-solr-solrj-4.10.0.jar所依赖的其他jar包    : solr-4.10.0\dist\solrj-lib文件夹下
  • solr-core-4.10.0.jar
  • commons-logging-1.0.4.jar 日志相关jar

Junit测试

[java] view plain copy
  1. package com.april.lucene.solr;  
  2.   
  3. import java.io.IOException;  
  4. import java.net.MalformedURLException;  
  5. import java.util.List;  
  6. import org.apache.solr.client.solrj.SolrQuery;  
  7. import org.apache.solr.client.solrj.SolrQuery.ORDER;  
  8. import org.apache.solr.client.solrj.SolrServerException;  
  9. import org.apache.solr.client.solrj.impl.HttpSolrServer;  
  10. import org.apache.solr.client.solrj.response.QueryResponse;  
  11. import org.apache.solr.client.solrj.response.UpdateResponse;  
  12. import org.apache.solr.common.SolrDocument;  
  13. import org.apache.solr.common.SolrDocumentList;  
  14. import org.apache.solr.common.SolrInputDocument;  
  15. import org.junit.After;  
  16. import org.junit.Before;  
  17. import org.junit.Test;  
  18. import com.april.lucene.model.JavaBean;  
  19. /** 
  20.  * @Author: April 
  21.  * @version Solr 4.10.0 
  22.  * @Date: 2014年10月14日 
  23.  * @参考:http://blog.csdn.net/liuweitoo/article/details/8137023 
  24.  */  
  25. public class ServerTest {  
  26.     private HttpSolrServer server = null;  
  27.     /** 
  28.     * 注:URL这里 ! 
  29.     * 这是错误的:URL = "http://localhost:8080/solr/home/april"; 
  30.     * 在安装solr配置solr.home环境变量整合tomcat时,已经配置了solr/home 
  31.     * 所以URL直接到/solr/code~ 就可以了,当时被个问题纠结了半天 
  32.     */  
  33.    private static final String URL = "http://localhost:8080/solr/april"; //april索引库URL  
  34.     @Before  
  35.     public void init() {  
  36.         server = new HttpSolrServer(URL);  
  37.     }  
  38.     /** 
  39.      *@Function: 添加索引 Document文档 
  40.      */  
  41.     @Test  
  42.     public void addDoc() {  
  43.         //创建doc文档  
  44.         SolrInputDocument doc = new SolrInputDocument();  
  45.         doc.addField("id"1);  
  46.         doc.addField("name""Add Solr Index");//schema.xml中首先应该配置了名称为name的field  
  47.         doc.addField("manu""Solr test file");  
  48.         try {  
  49.             UpdateResponse response = server.add(doc);//可以添加一个doc文档  
  50.             //server.add(Collection<SolrInputDocument> docs);//也可以直接添加一个文档集合  
  51.             server.commit();//commit后才保存到索引库  
  52.             System.out.println(response);  
  53.             System.out.println("query time:" + response.getQTime());  
  54.             System.out.println("Elapsed Time:" + response.getElapsedTime());  
  55.             System.out.println("status:" + response.getStatus());  
  56.         } catch (SolrServerException e) {  
  57.             e.printStackTrace();  
  58.         } catch (IOException e) {  
  59.             e.printStackTrace();  
  60.         }  
  61.     }  
  62.     /** 
  63.      *@Function: 直接添加JavaBean 
  64.      */  
  65.     @Test  
  66.     public void addBean() throws IOException, SolrServerException {  
  67.         //Bean需要添加Annotation注解,以便告诉solr哪些属性参与到index中  
  68.         JavaBean bean = new JavaBean();  
  69.         bean.setId("2");  
  70.         bean.setName("Add bean index");  
  71.         bean.setMenu("index bean menu");  
  72.         server.addBean(bean);//添加Bean到索引库  
  73.         //server.addBeans(Collection<?> beans);//同样有addBeans方法  
  74.         server.commit();  
  75.     }  
  76.     /** 
  77.      * @Function: 删除索引 
  78.      */  
  79.     @Test  
  80.     public void remove() throws SolrServerException, IOException {  
  81.         server.deleteById("1");//删除id为1的索引  
  82.         server.commit();  
  83.         //server.deleteById(List<String> ids);//删除id集合  
  84.         server.commit(truetrue);  <li class="alt" style="box-sizing: border-box; margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; color: inherit; line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !import

原创粉丝点击