Solr是基於Apache Lucene ™構建的流行,快速,開源的企業搜索平臺,具有高可靠性,可擴展性和容錯性,可提供分佈式索引,複製和負載均衡查詢,自動故障轉移和恢復,集中配置等。Solr爲世界上許多最大的互聯網站點提供搜索和導航功能
準備
下載Solr5.5.4並解壓
http://archive.apache.org/dist/lucene/solr/
需要下載tomcat8,tomcat7會報錯,下載完之後放在同一個文件夾下,方便配置,新建solr_home文件夾(可自定義文件夾名字)
開始配置
進入solr目錄 ..\apache-solr\solr-5.5.4\server\solr-webapp\ 下將目錄下的webapp拷貝到tomcat下的webapp下並改名solr(可自定義),看下圖
將solr目錄下 xx\apache-solr\solr-5.5.4\server\lib\ext\下的所有jar包
拷貝到 xx\apache-solr\apache-tomcat-8.5.34\webapps\solr\WEB-INF\lib\ 下
對,還有一個log4j的配置文件
E:\apache-solr\solr-5.5.4\server\resources 下的 log4j.properties 拷貝到如下目錄(classes如果沒有需要新建)
開始配置solr_home,這個是是存放索引目錄的文件夾
將 xx\apache-solr\solr-5.5.4\server\solr 下所有的文件都 Copy 到solr_home下
Copy的事情已經完成了,下面修改配置文件
進入到 tomcat 下的solr目錄 xx\apache-solr\apache-tomcat-8.5.34\webapps\solr\WEB-INF\ 修改web.xml
取消下面這段代碼的註釋,修改 <env-entry-value> 引用的索引絕對路徑,其他的不用動(最好按照我這個目錄來創建,後期熟練了可以自己去修改)
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>E:\apache-solr\solr_home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
啓動
保存剛纔修改的配置,啓動 tomcat
訪問:http://localhost:8080/solr/admin.html
能訪問到頁面算是第一步配置成功了
同步數據庫(Mysql)
先導入 jar 包
連接mysql數據庫必需的jar包:mysql-connector-java-5.1.12-bin.jar
xx\apache-solr\solr-5.5.4\dist\目錄下的 solr-dataimporthandler-5.5.4.jar、solr-dataimporthandler-extras-5.5.4.jar
都拷貝到 xx\apache-solr\apache-tomcat-8.5.34\webapps\solr\WEB-INF\lib\ 下
創建數據表,手動添加一些測試數據
DROP TABLE IF EXISTS `article`;
CREATE TABLE `article` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`author` varchar(255) DEFAULT NULL,
`type` varchar(255) DEFAULT NULL,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
在solr_home目錄下新建solr_core(索引單元庫,名字隨意)
複製 xx\apache-solr\solr_home\configsets\sample_techproducts_configs\ 下的 conf 放到剛纔創建的 solr_core下面
打開 \solr_home\solr_core\conf\ 下的 data-config.xml (也可能叫db-data-config.xml)修改成自己數據庫(參考文檔)
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/comtrade" user="root" password="root" />
<document name="article">
<entity name="article" pk="id"
query="select id,title,author,type from article"
deltaImportQuery="select * from article where id ='${dih.delta.id}'"
deltaQuery="select id from article where update_time > '${dataimporter.last_index_time}'">
<field name="id" column="id"/>
<field name="title" column="title"/>
<field name="author" column="author"/>
<field name="type" column="type"/>
<field name="update_time" column="update_time"/>
</entity>
</document>
</dataConfig>
修改solrconfig.xml,引入剛纔配置好的數據庫連接信息
找到<requestHandler> 標籤,在同級的位置新增一個如下的配置
<!-- Solr導入數據庫數據配置 -->
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
定義solr顯示的字段,修改managed-schema,添加 field 字段
你數據庫有哪些字段就添加哪些字段,其他的 field字段可以刪除,不然啓動會報錯
<!-- 屬性說明
<field name="域名(字段名)"
type="域的類型,必須匹配數據類型"
indexed="是否做索引"
stored="是否要存儲"
required="是否必填,一般id纔會設置"
multiValued="是否有多個值,如果爲多值,採用數組方式存儲" />
-->
保存修改的配置,重啓tomcat,就會出現一個solr_core
導入數據、查詢