这个方法是我自己根据对tomcat执行项目流程和solr的执行流程来自己弄的,所以有点麻烦,请到原地址查看心血谢谢:http://blog.csdn.net/chunlei_zhang/article/details/38449037。公司提倡的是基于框架扩展,而不是改变框架原有的配置(这个不好说明白),这种方式利于实施的人实施。不过我不赞成这种,因为任何事情只要存在就有存在的理由,如果实施者一点都学不到东西,他也会感觉很没劲,对吧?第二种方式我实验成功后也告诉大家。
一、首先下载所有的软件:Eclipse 4.3 环境 +tomcat 7.5 +solr软件
二、在Eclipse环境下创建一个Dynamic Program File,命名为solr2。删除solr2的WebRoot下的所有内容,然后解压找到solr.war文件夹,将其解压,放到solr2的WebRoot下,这个时候会出现红色的叉号,先不用管;
三、复制到WebRoot下后,然后找到web.xml,然后再web.xml配置以下内容:
<pre name="code" class="html"><web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"
metadata-complete="true"
>
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>E:/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
其中,value为你存储的solrCore的位置。我的是tomcat1.7,所以在这个地方会出现错误:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'env-entry-type'. One of '{"http://java.sun.com/xml/ns/javaee":mapped-name, "http://java.sun.com/xml/ns/ javaee":injection-target}' is expected.我看了很多中国博客,不过答案都是考过来拷过去,没有一个解决的,还有的说直接将2.5换成2.4都是不对的,方法很简单直接将value和type交换一下就好了。交换后如下:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>E:/solr</env-entry-value>
</env-entry>
上面的问题就解决了。
四、配置solrCore,首先根据步骤三配置的value建立目录,然后再solr文件下创建solr.xml.对solr.xml配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
<cores adminPath="/admin/cores">
<core name="hello" instanceDir="hello" />
</cores>
</solr>
其中
adminPath="/admin/cores"
是固定写法,我们只需要配置solrCore就可以了,我的solrCore名字就是hello
五.、根据步骤四写的solrCore的名字,同样在solr文件夹下创建hello文件夹,然后再在hello文件夹下创建conf文件夹,去solrExample中,将solrConfig.xml和schema.xml文件考到conf文件加下即可。当然我们可以配置多个solrCore.
步骤四和步骤五的结构图:
hello下的结构为:
conf文件下内容:
六、然后我们就可以运行了,运行结果明天展示,今天又到1点了,房东睡了,舍友也把灯关了,明天展示结果。
当你运行的时候会发现报sl4j的错误,这个时候只要去solr-4.9.0\example\lib\ext的文件加下将jar包和log4.properties考到lib文件夹下(log4.properties放到Web-INF):
输入url:http://localhost:8080/HelloWorld运行结果:
查看配置的core: