前言
近期因工作需要使用到solr查询,看了一下solr的功能:Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。【引用百度百科】
对于不同的solr版本所使用的JDK版本和JDK版本都有要求。
本篇博客所研究的是两套部署
目录
整合篇一
solr、JDK和tomcat版本
SOLR | solr-7.7.1 |
JDK | 1.8 |
tomcat | apache-tomcat-8.5.41 |
SYSTEM | windows10 |
一、下载安装
1. 因为这里是为了solr的学习而写的教程,所以JDK和tomcat的下载安装在这里就不(自)做(己)说(查)明(找),solr下载比较简单,在Apache Solr官网可以下载 https://lucene.apache.org/solr/downloads.html 找之前的版本,这里会呈现出所有版本以及各种样式下载(这个好似需要FQ才能够找到,不过相信你既然能找到这篇博客,找个solr应该不算难题)
下载完毕后直接解压就可以使用,解压目录大概是这样的
二、整合Tomcat
- 将 solr-7.1.0serversolr-webapp 目录下的 webapp 文件夹拷贝到Tomcat的 apache-tomcat-8.5.41webapps 文件夹下,并修改文件名为 solr (更名非必要)
- 将 solr-7.1.0serverlibext 目录下的所有jar包拷贝到 apache-tomcat-8.5.41webappssolrWEB-INFlib 文件夹下
- 将 solr-7.1.0serverlib 目录下的 metrics-* 和 gmetric4j-1.0.7.jar 拷贝到 同上文件夹下
- 将 solr-7.1.0server esources目录下的log4j.properties文件拷贝到 apache-tomcat-8.5.41webappssolrWEB-INFclasses目录下,默认没有classes目录,自己创建
- 将 solr-7.1.0server 下的 solr目录拷贝到 apache-tomcat-8.5.41webappssolr 下,更改名称为solrhome(这个位置可以选择任意磁盘,名称自定义)
- 更改 apache-tomcat-8.5.41webappssolrWEB-INF 目录下的 web.xml 文件,此版本中被注释掉了,解开·注释修改<env-entry-value> 标签内容为 5步骤中的文件夹的位置。 去掉安全验证代码,不然每次登陆都需要用户名密码验证,麻烦,还有有一种说法:项目会报403错误。
···
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:solr-serverapache-tomcat-8.5.41webappssolrsolrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</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> -->
solrhome 是solr的核心目录,主要的配置文件,索引以及基本数据的保存,插件和数据库的集成都是在此目录下进行配置。进行到此solr和tomcat就算是整合完成了,下面启动测试 http://127.0.0.1:8080/solr/index.html
三、创建core
关于core的创建有两种方式,一种是通过页面先创建(肯定不会成功)然后在导入所需文件才能成功创建,再点击创建才能够成功(不推荐),第二种是手动创建core 核心目录以及所需文件然后在页面点击创建(推荐), 本文采用第二种方式创建core。
- 在 apache-tomcat-8.5.41webappssolrsolrhome 目录下创建一个名为 myfirstcore 的文件夹作为第一个core
- 将 D:solr-serverapache-tomcat-8.5.41webappssolrsolrhomeconfigsets\_default 目录下的conf 文件夹拷贝到 myfirstcore 目录下 ,并在myfirstcore 目录下创建一个空文件夹 data
四、数据库配置-导入数据库索引
- 在 apache-tomcat-8.5.41webappssolrWEB-INFlib 目录下放入数据库连接的jar包 mysql-connector-java-5.1.34.jar
- 拷贝 solr-7.1.0dist 目录下的 solr-dataimporthandler-7.1.0.jar 和 solr-dataimporthandler-extras-7.1.0.jar 包到 apache-tomcat-8.5.41webappssolrWEB-INFlib目录下
- 拷贝solr-7.1.0exampleexample-DIHsolrdbconf 目录下的 db-data-config.xml 文件到 apache-tomcat-8.5.41webappssolrsolrhomemyfirstcoreconf 目录下改名为 data-config.xml (自定义)内容替换如下
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/ssmertong"
user="root"
password="root"/>
<document>
<!--指定需要导入的数据库表名,以及数据 -->
<entity name="child"
query="select id,name,sex,minzu,hukou from child">
</entity>
</document>
</dataConfig>
- 修改 solrconfig.xml 文件,添加数据导入信息,放入<config> 的下级(此处在88行左右处)
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
- 修改solr自定义字段,在managed-schema 文件中添加 field,位置放于跟文件中大概113行的field后面即可,id默认已经给出
<field name="name" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="sex" type="string" indexed="false" stored="true" multiValued="false"/>
<field name="minzu" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="hukou" type="string" indexed="true" stored="true" multiValued="false"/>
启动Tomcat 测试用例选择自己创建的 core myfirstcore 在Entity 中选择自己定义的实例 child 然后选中 下方 Auto-Refresh Status ,当数据较多时会自动进行下一组数据的导入。点击Execute 开始导入数据索引
数据导入完成,下面进行查询测试,在页面中 Query中直接点击 Execute Query 查询
此次整合就算是告一段落了。