Solr 4.0 基础教程

本文只是Solr 4.0的基础教程,本人不经常写东西,写的不好请见谅,欢迎到群233413850进行讨论学习。

        转载请标明原文地址:http://my.oschina.net/zhanyu/blog/86147

       先说一点部署之后肯定会有人用solrj,solr 4.0好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrServer,我是找了半天才发现,大家以后可以注意。

     部署前准备:

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


?
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里面的配置文件:

        

?
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文件:

?
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查询,右侧生成了地址可以打开查看,到此结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值