solr配置与solrj EmbeddedSolrServer使用篇

本文详细介绍Solr的配置过程,包括单核与多核配置步骤,并提供了具体的代码示例。通过本文,读者可以了解到如何在不同场景下进行Solr的部署与使用。

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使用:

  1. packagecom.taobao.terminator.allen.SolrjTest;
  2. importorg.apache.solr.client.solrj.SolrQuery;
  3. importorg.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
  4. importorg.apache.solr.common.SolrDocument;
  5. importorg.apache.solr.common.SolrDocumentList;
  6. importorg.apache.solr.common.SolrInputDocument;
  7. importorg.apache.solr.core.CoreContainer;
  8. importorg.junit.Test;
  9. publicclassEmbedSolrServerSingleCoreTest{
  10. privatestaticCoreContainer.Initializerinitializer=null;
  11. privatestaticCoreContainercoreContainer=null;
  12. privatestaticEmbeddedSolrServerserver=null;
  13. static{
  14. try{
  15. System.setProperty("solr.solr.home","D://test//solrcore//core0");
  16. initializer=newCoreContainer.Initializer();
  17. coreContainer=initializer.initialize();
  18. server=newEmbeddedSolrServer(coreContainer,"");
  19. }catch(Exceptione){
  20. e.printStackTrace();
  21. }
  22. }
  23. @Test
  24. publicvoidquery()throwsException{
  25. try{
  26. SolrQueryq=newSolrQuery();
  27. q.setQuery("*:*");
  28. q.setStart(0);
  29. q.setRows(20);
  30. SolrDocumentListlist=server.query(q).getResults();
  31. System.out.println(list.getNumFound());
  32. }catch(Exceptione){
  33. e.printStackTrace();
  34. }finally{
  35. coreContainer.shutdown();
  36. }
  37. }
  38. @Test
  39. publicvoiddeleteAllDoc()throwsException{
  40. try{
  41. server.deleteByQuery("*:*");
  42. server.commit();
  43. query();
  44. }catch(Exceptione){
  45. e.printStackTrace();
  46. }finally{
  47. coreContainer.shutdown();
  48. }
  49. }
  50. }
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使用:

  1. packagecom.taobao.terminator.allen.SolrjTest;
  2. importjava.io.File;
  3. importorg.apache.solr.client.solrj.SolrQuery;
  4. importorg.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
  5. importorg.apache.solr.core.CoreContainer;
  6. importorg.apache.solr.core.CoreContainer.Initializer;
  7. publicclassEmbedSolrServerMultiCoreTest{
  8. privatestaticCoreContainer.Initializerinitializer=null;
  9. privatestaticCoreContainercoreContainer=null;
  10. privatestaticEmbeddedSolrServerserver=null;
  11. static{
  12. try{
  13. System.setProperty("solr.solr.home","D://test//solrcore//core1");
  14. initializer=newCoreContainer.Initializer();
  15. coreContainer=initializer.initialize();
  16. server=newEmbeddedSolrServer(coreContainer,"");
  17. }catch(Exceptione){
  18. e.printStackTrace();
  19. }
  20. }
  21. publicvoidquery()throwsException{
  22. try{
  23. Filef=newFile("D:/test/solrcore/multicore","solr.xml");
  24. coreContainer=newInitializer().initialize();
  25. coreContainer.load("D:/test/multicore",f);
  26. coreContainer.setPersistent(true);
  27. server=newEmbeddedSolrServer(coreContainer,"core1");
  28. SolrQueryq=newSolrQuery();
  29. q.setQuery("*:*");
  30. System.out.println(server.query(q).getResults().getNumFound());
  31. }catch(Exceptione){
  32. e.printStackTrace();
  33. }finally{
  34. coreContainer.shutdown();
  35. }
  36. }
  37. }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值