ngir 发表于 2015-7-31 07:59:09

Apache Solrj EmbeddedSolrServer使用

  Solr的配置网上讲的很多,但是实施总是遇到困难,现总结如下:
  1. 从官网下载solr core的源码包,将solrwar包放到tomcat的webapps文件夹下,其它web容器亦然.
  运行tomcat ,解压出来solr的文件夹.
  
  2. Single core配置:以solr自带例子做讲解
    2.1. 新建solrhome目录:d:/test/solrcore/singlecore ,从solr源码的example包下复制solr包
  2.2. 在tomcat 下的 webappss的solr包 WEB-INF目录下修改web.xml的



solr/home
D:/test/solrcore/singlecore
java.lang.String
  2.3. 修改solrhome目录下的solr下的conf的solrconfig.xml文件



D:/test/solrcore/data/singlecore
  此目录放置的是solr的data索引文件
  2.4. 启动solr控制台,即可
  
  3. multicore 配置:以solr core源码的multicore为例
  3.1. 新建solrhome目录:d:/test/solrcore/multicore从solr源码的example下复制multicore目录到在solrhome下
  3.2. 在tomcat 下的 webappss的solr包 WEB-INF目录下修改web.xml的



solr/home
D:/test/solrcore/multicore
java.lang.String
  3.2. 修改solrhome目录下的solr下的conf的solrconfig.xml文件            
  D:/test/solrcore/data/multicore
  3.3. 将core0和core1的索引文件放到 D:/test/solrcore/data/multicore目录下
  3.4. 启动solr控制台,可以看到二个core,安装完成
  
  4. EmbeddedSolrServer使用
  4.1.singleCore使用:



package com.taobao.terminator.allen.SolrjTest;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.core.CoreContainer;
import org.junit.Test;
public class EmbedSolrServerSingleCoreTest {
    private static CoreContainer.Initializer initializer = null;
    private static CoreContainer coreContainer = null;
    private static EmbeddedSolrServer server = null;
    static {
      try {
            System.setProperty("solr.solr.home", "D://test//solrcore//core0");
            initializer = new CoreContainer.Initializer();
            coreContainer = initializer.initialize();
            server = new EmbeddedSolrServer(coreContainer, "");
      } catch (Exception e) {
            e.printStackTrace();
      }
    }
    @Test
    public void query() throws Exception {
      try {
            SolrQuery q = new SolrQuery();
            q.setQuery("*:*");
            q.setStart(0);
            q.setRows(20);
            SolrDocumentList list = server.query(q).getResults();
            System.out.println(list.getNumFound());
      } catch (Exception e) {
            e.printStackTrace();
      } finally {
            coreContainer.shutdown();
      }
    }
    @Test
    public void deleteAllDoc() throws Exception {
      try {
            server.deleteByQuery("*:*");
            server.commit();
            query();
      } catch (Exception e) {
            e.printStackTrace();
      } finally {
            coreContainer.shutdown();
      }
    }
}
  
  4.2.multiCore使用:



package com.taobao.terminator.allen.SolrjTest;
import java.io.File;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.CoreContainer.Initializer;
public class EmbedSolrServerMultiCoreTest {
    private static CoreContainer.Initializer initializer = null;
    private static CoreContainer coreContainer = null;
    private static EmbeddedSolrServer server = null;
    static {
      try {
            System.setProperty("solr.solr.home", "D://test//solrcore//core1");
            initializer = new CoreContainer.Initializer();
            coreContainer = initializer.initialize();
            server = new EmbeddedSolrServer(coreContainer, "");
      } catch (Exception e) {
            e.printStackTrace();
      }
    }
    publicvoid query() throws Exception {
      try {
            File f = new File( "D:/test/solrcore/multicore", "solr.xml" );
            coreContainer = new Initializer().initialize();
            coreContainer.load("D:/test/multicore", f);
            coreContainer.setPersistent(true);
            server = new EmbeddedSolrServer(coreContainer, "core1");
            SolrQuery q = new SolrQuery();
            q.setQuery("*:*");
            System.out.println(server.query(q).getResults().getNumFound());
      } catch (Exception e) {
            e.printStackTrace();
      } finally {
            coreContainer.shutdown();
      }
    }
}
  
  (来源:在http://blog.iyunv.com/flyingpig4/article/details/6366414基础上美化阅读)
  
页: [1]
查看完整版本: Apache Solrj EmbeddedSolrServer使用