本文只是Solr 4.0的基础教程,本人不经常写东西,写的不好请见谅,欢迎到群233413850进行讨论学习。
转载请标明原文地址:http://my.oschina.net/zhanyu/blog/86147
先说一点部署之后肯定会有人用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,把下面代码复制进去放到后面:
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 > |
其中 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" /> |
1 | name="",是库的名字,instanceDir="",是目录 |
每个目录下包含两个文件夹conf和data,data下有两个文件夹index和tlog,index是存放生成的索引文件,tlog存放log,conf下是必要的配置文件schema.xml和solrconfig.xml,可以参考官方或者core里面的配置文件:
01 | <? xml version = "1.0" ?> |
02 | < schema name = "example solr test" version = "1.1" > |
04 | < fieldtype name = "string" class = "solr.StrField" sortMissingLast = "true" omitNorms = "true" /> |
05 | < fieldType name = "long" class = "solr.TrieLongField" precisionStep = "0" positionIncrementGap = "0" /> |
10 | < field name = "id" type = "string" indexed = "true" stored = "true" multiValued = "false" required = "true" /> |
11 | < field name = "type" type = "string" indexed = "true" stored = "true" multiValued = "false" /> |
12 | < field name = "name" type = "string" indexed = "true" stored = "true" multiValued = "false" /> |
13 | < field name = "_version_" type = "long" indexed = "true" stored = "true" /> |
17 | < uniqueKey >id</ uniqueKey > |
20 | < defaultSearchField >name</ defaultSearchField > |
23 | < solrQueryParser defaultOperator = "OR" /> |
solrconfig.xml我还不是很懂,在这里就不讲了,但是必须配置(好像是必须配):
01 | <? xml version = "1.0" encoding = "UTF-8" ?> |
04 | < luceneMatchVersion >LUCENE_40</ luceneMatchVersion > |
06 | < directoryFactory name = "DirectoryFactory" class = "${solr.directoryFactory:solr.StandardDirectoryFactory}" /> |
08 | < dataDir >${solr.solrtest.data.dir:}</ dataDir > solr.solrtest.data.dir存放的是索引目录 |
10 | < updateHandler class = "solr.DirectUpdateHandler2" > |
12 | < str name = "dir" >${solr.solrtest.data.dir:}</ str > |
16 | < requestHandler name = "/get" class = "solr.RealTimeGetHandler" > |
18 | < str name = "omitHeader" >true</ str > |
22 | < requestHandler name = "/replication" class = "solr.ReplicationHandler" startup = "lazy" /> |
24 | < requestDispatcher handleSelect = "true" > |
25 | < requestParsers enableRemoteStreaming = "false" multipartUploadLimitInKB = "2048" /> |
28 | < requestHandler name = "standard" class = "solr.StandardRequestHandler" default = "true" /> |
29 | < requestHandler name = "/analysis/field" startup = "lazy" class = "solr.FieldAnalysisRequestHandler" /> |
30 | < requestHandler name = "/update" class = "solr.UpdateRequestHandler" /> |
31 | < requestHandler name = "/admin/" class = "org.apache.solr.handler.admin.AdminHandlers" /> |
33 | < requestHandler name = "/admin/ping" class = "solr.PingRequestHandler" > |
34 | < lst name = "invariants" > |
35 | < str name = "q" >solrpingquery</ str > |
38 | < str name = "echoParams" >all</ str > |
44 | < defaultQuery >solr</ defaultQuery > |
之后在exampledocs目录下手动创建一个solr1.xml文件:
4 | < field name = "id" >solr1</ field > |
5 | < field name = "type" >type1</ field > |
6 | < field name = "name" >my solr test</ field > |
跟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查询,右侧生成了地址可以打开查看,到此结束。