solr-6.3.0部署到tomcat9
1.首先将下载好的solr-6.3.0\server\solr-webapp中的webapp拷贝一份放到tomcat\apache-tomcat-9.0.44-solr\webapps文件里面,并将webapp修改为solr。
2.将solr-6.3.0\dist文件下的jar包拷贝到tomcat\apache-tomcat-9.0.44-solr\webapps\solr\WEB-INF\lib文件里面
3.将solr-6.3.0\dist\solrj-lib文件下的jar包拷贝到tomcat\apache-tomcat-9.0.44-solr\webapps\solr\WEB-INF\lib文件里面
4.将solr-6.3.0\server\lib\ext文件下的所有jar包拷贝到tomcat\apache-tomcat-9.0.44-solr\webapps\solr\WEB-INF\lib文件里面
5.在tomcat\apache-tomcat-9.0.44-solr\webapps\solr\WEB-INF文件下创建classes文件,将solr-6.3.0\server\resources文件下的log4j.properties配置文件拷贝到创建好的classes文件下面
6.拷贝solr-6.3.0\server文件下的solr文件夹拷贝到磁盘的任意位置(用来存储索引数据的)并改名为solr_home,然后再solr_home文件下创建一个新的文件夹core_1(solr索引库的实例)
7.在tomcat\apache-tomcat-9.0.44-solr\webapps\solr\WEB-INF文件下的web.xml中添加属性并注释掉权限检查
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>solr_home的路径</env-entry-value>
</env-entry>
<!-- Get rid of error message
全部注释掉
<security-constraint>
<web-resource-collection>
<web-resource-name>Disable TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Enable everything but TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method-omission>TRACE</http-method-omission>
</web-resource-collection>
</security-constraint>
-->
8.启动tomcat可以正常访问http://127.0.0.1:8081/solr/index.html#/页面表示上面配置正常(8081是我修改了tomcat的启动端口,第三步好像可以省略掉,第二步好像只需要拷贝solr-dataimporthandle-6.3.0.jar和solr-dataimporthandle-extras-6.3.0.jar,具体我没有研究,按照上面步骤可以正常使用solr服务)
9.在solr_home\core_1文件夹下创建data文件夹,然后将solr-6.3.0\example\example-DIH\solr\solr文件夹里面的conf文件夹拷贝到solr_home\core_1文件夹下
10.在http://127.0.0.1:8081/solr/index.html页面左边选择Core Admin选项点击Add Core,在name和instanceDir中填写core_1(就是你在solr_home里面创建的文件夹的名字),这样就会创建好一个solr索引库实例。(这里个人理解为,它会通过web.xml中找到solr_home然后在里面创建索引实例,并且core_1中如果没有config文件夹就会创建失败)
配置IK分词器,添加字段类型
10.配置ik分词器(这里我直接引用别人的博客)。
下载http://pan.baidu.com/s/1c68HBK将文件夹中的ik-analyzer-solr6.3.jar拷贝到tomcat\apache-tomcat-9.0.44-solr\webapps\solr\WEB-INF\lib里面。然后将文件夹中IKAnalyzer.cfg.xml、mydict.dic、stopword.dic文件拷贝到tomcat\apache-tomcat-9.0.44-solr\webapps\solr\WEB-INF\classes文件夹中(这里就是对IK Analyzer的一些扩展配置,重要的是ik-analyzer-solr6.3.jar)。最后需要在solr_home\core_1\conf中找到managed-schema文件并添加属性
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<field name="text_ik" type="text_ik" multiValued="true" indexed="true" stored="true"/>
11.添加字段类型。在http://127.0.0.1:8081/solr/index.html页面先点击Core Selector然后选择你的索引实例(就是core_1)然后再点击Schema,再页面的左上角点击Add Field(name就是你的字段名字,field type就是选择使用分词器,推荐使用ik)最后就是Add Field了。
使用java测试
12.通过java使用solr7.7.1操作solr(因为我使用的是spring框架,需要手写xml文件和导包 (˘•灬•˘),别问为什么不用maven)。将solr-6.3.0\dist\solrj-lib文件夹下的所有jar包拷贝到项目中(感觉这个文件夹中的jar包就是需要用在这里)
package com.zengjx;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.IOException;
/**
* @author: FastRabbit
* @date: 2021/4/5 20:47
* @description:
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class SolrTest {
@Test
public void solrTest() throws IOException, SolrServerException {
//链接solr的url
String SOLR_URL = "http://localhost:8081/solr/core_1";
//创建链接、创建文档对象并设置属性值
HttpSolrClient build = new HttpSolrClient.Builder(SOLR_URL).withSocketTimeout(100000).build();
SolrInputDocument solrInputFields = new SolrInputDocument();
solrInputFields.addField("id",2);
solrInputFields.addField("username","ls");
solrInputFields.addField("password","456");
build.add(solrInputFields);
build.commit();
}
}
13.你用ElasticSearch它不香吗?