欢迎投稿

今日深度:

lucence和solr,

lucence和solr,


引用:http://my.oschina.net/zhanyu/blog/86147

     部署前准备:

  • Solr 4.0 必须运行在Java1.5 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可。
  • Solr 4.0 :  http://www.apache.org/dyn/closer.cgi/lucene/solr/4.0.0
  • 本文以Tomcat7.0  进行演示。
  • 如果出现错误无法运行,请更换更高版本的JDK,Solr各版本支持JDK的版本不尽相同,可以查阅官方中各个版本的不同。

    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,把下面代码复制进去放到后面:

 

//这个是指定solrHome所在的目录

?
1 2 3 4 5 <env-entry>    <env-entry-name>solr/home</env-entry-name> //这个参数不要换    <env-entry-value>E:\SolrHome</env-entry-value>    <env-entry-type>java.lang.String</env-entry-type> </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 2 3 4 5 6 7 8 <solr persistent="false">   <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}">     <core name="core0" instanceDir="core0" />     <core name="core1" instanceDir="core1" />     <core name="collection1" instanceDir="collection1" />     <core name="solrtest" instanceDir="solrtest"/>   </cores> </solr>
?
1 name="",是库的名字,instanceDir="",是目录

 

        每个目录下包含两个文件夹conf和data,data下有两个文件夹index和tlog,index是存放生成的索引文件,tlog存放log,conf下是必要的配置文件schema.xml和solrconfig.xml,可以参考官方或者core里面的配置文件:

 

这里是schema文件,用于定义索引字段的type类型和字段名字.也可以定义“中文分词”类型的。一般中文分词的索引我们用的是,text_ika,所以需要引入jar包。

        

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <?xml version="1.0" ?> <schema name="example solr test" version="1.1">   <types>    <fieldtype name="string"  class="solr.StrField" sortMissingLast="true" omitNorms="true"/>    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>   </types>    <fields>     <!-- general -->   <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>   <field name="type" type="string" indexed="true" stored="true" multiValued="false" />   <field name="name" type="string" indexed="true" stored="true" multiValued="false" />   <field name="_version_" type="long" indexed="true" stored="true"/>  </fields>    <!-- field to use to determine and enforce document uniqueness. -->  <uniqueKey>id</uniqueKey>    <!-- field for the QueryParser to use when an explicit fieldname is absent -->  <defaultSearchField>name</defaultSearchField>    <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->  <solrQueryParser defaultOperator="OR"/> </schema>

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

        这个基本上维持原样即可,不做改变。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 <?xml version="1.0" encoding="UTF-8" ?> <!-- 可以从core文件中copy过来 --> <config>   <luceneMatchVersion>LUCENE_40</luceneMatchVersion>       <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>     <dataDir>${solr.solrtest.data.dir:}</dataDir>   solr.solrtest.data.dir存放的是索引目录     <updateHandler class="solr.DirectUpdateHandler2">     <updateLog>       <str name="dir">${solr.solrtest.data.dir:}</str>     </updateLog>   </updateHandler>     <requestHandler name="/get" class="solr.RealTimeGetHandler">     <lst name="defaults">       <str name="omitHeader">true</str>     </lst>   </requestHandler>       <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />     <requestDispatcher handleSelect="true" >     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />   </requestDispatcher>       <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />   <requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />   <requestHandler name="/update" class="solr.UpdateRequestHandler"  />   <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />     <requestHandler name="/admin/ping" class="solr.PingRequestHandler">     <lst name="invariants">       <str name="q">solrpingquery</str>     </lst>     <lst name="defaults">       <str name="echoParams">all</str>     </lst>   </requestHandler>     <!-- config for the admin interface -->   <admin>     <defaultQuery>solr</defaultQuery>   </admin>   </config>

        之后在exampledocs目录下手动创建一个solr1.xml文件://这个也可以是数据库的数据源,这里只是提供xml的数据源,用于提交,形成solr的索引。

?
1 2 3 4 5 6 7 8 <?xml version="1.0" ?> <add>   <doc>     <field name="id">solr1</field>     <field name="type">type1</field>     <field name="name">my solr test</field>   </doc> </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查询,右侧生成了地址可以打开查看,到此结束。

www.htsjk.Com true http://www.htsjk.com/solr/31991.html NewsArticle lucence和solr, 引用:http://my.oschina.net/zhanyu/blog/86147      部署前准备: Solr 4.0 必须运行在Java1.5 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可。 Solr 4.0 :  http://www.ap...
相关文章
    暂无相关文章
评论暂时关闭