天天看點

solr配置與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>

        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 {  

            solrquery q = new solrquery();  

            q.setquery("*:*");  

            q.setstart(0);  

            q.setrows(20);  

            solrdocumentlist list = server.query(q).getresults();  

            system.out.println(list.getnumfound());  

        } finally {  

            corecontainer.shutdown();  

    public void deletealldoc() throws exception {  

            server.deletebyquery("*:*");  

            server.commit();  

            query();  

}  

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 {

solrquery q = new solrquery();

q.setquery("*:*");

q.setstart(0);

q.setrows(20);

solrdocumentlist list = server.query(q).getresults();

system.out.println(list.getnumfound());

} finally {

corecontainer.shutdown();

public void deletealldoc() throws exception {

server.deletebyquery("*:*");

server.commit();

query();

        4.2:multicore使用:

import java.io.file;  

import org.apache.solr.core.corecontainer.initializer;  

public class embedsolrservermulticoretest {  

            system.setproperty("solr.solr.home", "d://test//solrcore//core1");  

    public  void query() throws exception {  

            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");  

            system.out.println(server.query(q).getresults().getnumfound());  

繼續閱讀