zoukankan      html  css  js  c++  java
  • 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的 

    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value> D:/test/solrcore/singlecore</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>

      2.3. 修改solrhome目录下的solr下的conf的solrconfig.xml文件

    <dataDir>D:/test/solrcore/data/singlecore</dataDir>

        此目录放置的是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的 

    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value> D:/test/solrcore/multicore</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>

      3.2. 修改solrhome目录下的solr下的conf的solrconfig.xml文件            

                    <dataDir>D:/test/solrcore/data/multicore</dataDir>
      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();
    }
    }

    public void 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.csdn.net/flyingpig4/article/details/6366414基础上美化阅读)

  • 相关阅读:
    python __path__ 变量
    mysql-5.7.9 shutdown 语法详解
    scikit-learn随机森林调参小结
    supervisor安装部署文档和管理实例
    随机森林种类及区别--g1
    决策树算法原理--good blog
    各种排序算法的时间复杂度
    【Django2.0】python manage.py makemigrations 和 python manage.py migrate的区别
    使用Apollo做配置中心
    lock in share mode 和 select for update
  • 原文地址:https://www.cnblogs.com/ibook360/p/2267451.html
Copyright © 2011-2022 走看看