前言
近期因工作需要使用到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 找之前的版本,這裏會呈現出所有版本以及各種樣式下載(這個好似需要翻牆才能夠找到,不過相信你既然能找到這篇博客,找個solr應該不算難題)
下載完畢後直接解壓就可以使用,解壓目錄大概是這樣的
二、整合Tomcat
- 將 solr-7.1.0\server\solr-webapp 目錄下的 webapp 文件夾拷貝到Tomcat的 apache-tomcat-8.5.41\webapps 文件夾下,並修改文件名爲 solr (更名非必要)
- 將 solr-7.1.0\server\lib\ext 目錄下的所有jar包拷貝到 apache-tomcat-8.5.41\webapps\solr\WEB-INF\lib 文件夾下
- 將 solr-7.1.0\server\lib 目錄下的 metrics-* 和 gmetric4j-1.0.7.jar 拷貝到 同上文件夾下
- 將 solr-7.1.0\server\resources目錄下的log4j.properties文件拷貝到 apache-tomcat-8.5.41\webapps\solr\WEB-INF\classes目錄下,默認沒有classes目錄,自己創建
- 將 solr-7.1.0\server 下的 solr目錄拷貝到 apache-tomcat-8.5.41\webapps\solr 下,更改名稱爲solrhome(這個位置可以選擇任意磁盤,名稱自定義)
- 更改 apache-tomcat-8.5.41\webapps\solr\WEB-INF 目錄下的 web.xml 文件,此版本中被註釋掉了,解開·註釋修改<env-entry-value> 標籤內容爲 5步驟中的文件夾的位置。 去掉安全驗證代碼,不然每次登陸都需要用戶名密碼驗證,麻煩,還有有一種說法:項目會報403錯誤。
···
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:\solr-server\apache-tomcat-8.5.41\webapps\solr\solrhome</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.41\webapps\solr\solrhome 目錄下創建一個名爲 myfirstcore 的文件夾作爲第一個core
- 將 D:\solr-server\apache-tomcat-8.5.41\webapps\solr\solrhome\configsets\_default 目錄下的conf 文件夾拷貝到 myfirstcore 目錄下 ,並在myfirstcore 目錄下創建一個空文件夾 data
四、數據庫配置-導入數據庫索引
- 在 apache-tomcat-8.5.41\webapps\solr\WEB-INF\lib 目錄下放入數據庫連接的jar包 mysql-connector-java-5.1.34.jar
- 拷貝 solr-7.1.0\dist 目錄下的 solr-dataimporthandler-7.1.0.jar 和 solr-dataimporthandler-extras-7.1.0.jar 包到 apache-tomcat-8.5.41\webapps\solr\WEB-INF\lib目錄下
- 拷貝solr-7.1.0\example\example-DIH\solr\db\conf 目錄下的 db-data-config.xml 文件到 apache-tomcat-8.5.41\webapps\solr\solrhome\myfirstcore\conf 目錄下改名爲 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 查詢
此次整合就算是告一段落了。