海水正蓝

面朝大海,春暖花开
posts - 145, comments - 29, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

【转】Solr 4.0部署

Posted on 2012-12-03 16:48 小胡子 阅读(7386) 评论(1)  编辑  收藏 所属分类: Solr
本文只是Solr 4.0的基础教程,本人不经常写东西,写的不好请见谅,欢迎到群233413850进行讨论学习。
       先说一点部署之后肯定会有人用solrj,solr 4.0好像添加了不少东西,其中CommonsHttpSolrServer这个类改

名为HttpSolrServer,我是找了半天才发现,大家以后可以注意。


     部署前准备:


Solr 4.0 目录:

        

        这里是我的部署方式,Tomcat安装好之后把apache-solr-4.0.0\example\webapps下的solr.war文件拷贝到Tomcat下的

Tomcat7.0\webapps目录下,然后启动Tomcat 报错不用管,solr.war会自动解压,之后打开Tomcat7.0\webapps\solr\WEB-

INF\web.xml,把下面代码复制进去放到后面:

  1. <env-entry>   
  2.       <env-entry-name>solr/home</env-entry-name>   
  3.       <env-entry-value>E:\SolrHome</env-entry-value>   
  4.       <env-entry-type>java.lang.String</env-entry-type>
  5.     </env-entry>
复制代码

            其中  E:\SolrHome  是存放solr配置文件等,修改为自己文件的位置,为了看着更清晰直观,你可以这样放:


            E:\Tomcat7.0


            E:\apache-solr-4.0.0


            E:\SolrHome


            现在可以重新启动Tomcat了,没有报错,通过这个地址进入Solr4.0页面:http://localhost:8080/solr

        

            如果进入以上界面说明成功了,没有成功的话页面会有ERROR提示。


            如图:左侧core0,core1等是solr 4.0中的示例,core0和core1位于apache-solr-4.0.0\example\multicore所有文件都下拷贝

到E:\SoleHome下,core0和core1可以理解为两个库,都是独立的,用来存放索引以及生成这些索引文件所需要的配置文件,solrtest是我测试建立的目录,如图:

        没添加一个库都需要在solr.xml里面进行配置,这个比较简单

  1. <solr persistent="false">  
  2.            <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}">   
  3.                  <core name="core0" instanceDir="core0" />   
  4.                  <core name="core1" instanceDir="core1" />   
  5.                  <core name="collection1" instanceDir="collection1" />   
  6.                  <core name="solrtest" instanceDir="solrtest"/>
  7.           </cores>
  8.    </solr>
复制代码
name="",是库的名字,instanceDir="",是目录

        每个目录下包含两个文件夹conf和data,data下有两个文件夹index和tlog,index是存放生成的索引文件,tlog存放log,

conf下是必要的配置文件schema.xml和solrconfig.xml,可以参考官方或者core里面的配置文件:

  1. <?xml version="1.0" ?>
  2. <schema name="example solr test" version="1.1">
  3.   <types>
  4.    <fieldtype name="string"  class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
  5.    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
  6.   </types>

  7. <fields>   
  8.   <!-- general -->
  9.   <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
  10.   <field name="type" type="string" indexed="true" stored="true" multiValued="false" />
  11.   <field name="name" type="string" indexed="true" stored="true" multiValued="false" />
  12.   <field name="_version_" type="long" indexed="true" stored="true"/>
  13. </fields>

  14. <!-- field to use to determine and enforce document uniqueness. -->
  15. <uniqueKey>id</uniqueKey>

  16. <!-- field for the QueryParser to use when an explicit fieldname is absent -->
  17. <defaultSearchField>name</defaultSearchField>

  18. <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
  19. <solrQueryParser defaultOperator="OR"/>
  20. </schema>
复制代码

        solrconfig.xml我还不是很懂,在这里就不讲了,但是必须配置(好像是必须配):

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!-- 可以从core文件中copy过来 -->
  3. <config>
  4.   <luceneMatchVersion>LUCENE_40</luceneMatchVersion>
  5.   
  6.   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>

  7.   <dataDir>${solr.solrtest.data.dir:}</dataDir>   这里solr.后面名字改掉

  8.   <updateHandler class="solr.DirectUpdateHandler2">
  9.     <updateLog>
  10.       <str name="dir">${solr.solrtest.data.dir:}</str>
  11.     </updateLog>
  12.   </updateHandler>

  13.   <requestHandler name="/get" class="solr.RealTimeGetHandler">
  14.     <lst name="defaults">
  15.       <str name="omitHeader">true</str>
  16.     </lst>
  17.   </requestHandler>
  18.   
  19.   <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />

  20.   <requestDispatcher handleSelect="true" >
  21.     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
  22.   </requestDispatcher>
  23.   
  24.   <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
  25.   <requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />
  26.   <requestHandler name="/update" class="solr.UpdateRequestHandler"  />
  27.   <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />

  28.   <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
  29.     <lst name="invariants">
  30.       <str name="q">solrpingquery</str>
  31.     </lst>
  32.     <lst name="defaults">
  33.       <str name="echoParams">all</str>
  34.     </lst>
  35.   </requestHandler>

  36.   <!-- config for the admin interface -->
  37.   <admin>
  38.     <defaultQuery>solr</defaultQuery>
  39.   </admin>

  40. </config>
复制代码

        之后在exampledocs目录下手动创建一个solr1.xml文件:

  1. <?xml version="1.0" ?>
  2. <add>
  3.   <doc>
  4.     <field name="id">solr1</field>
  5.     <field name="type">type1</field>
  6.     <field name="name">my solr test</field>
  7.   </doc>
  8. </add>
复制代码

         跟schema.xml中的字段对应,好了现在可以提交数据了,这里在window命令窗口提交数据,把E:\apache-solr-

4.0.0\example\exampledocs下的post.jar复制到 E:\SolrHome\exampledocs下

        打开命令窗口CD 到E:\SolrHome\exampledocs下使用命令,Tomcat不要忘了开:

java -Durl=http://localhost:8080/solr/solrtest/update -Ddata=files -jar post.jar solr1.xml






如图成功的添加的索引,看下E:\SolrHome\solrtest\data\index下的文件:


        进入solr页面:

        

        点击Executu Query查询,右侧生成了地址可以打开查看,到此结束。



评论

# re: 【转】Solr 4.0部署  回复  更多评论   

2013-12-26 13:40 by 板上钉钉
您好,我有一个问题:
在我的机器上,solr配置成功后,会成功显示那个页面,右侧内存可用量那些系统服务都可以工作,但是大约两三分钟之后,再次访问会发现页面仍然在,但是服务都没了,而且每个core也都在

只有注册用户登录后才能发表评论。


网站导航: