Ubuntu 14.04下安裝solr 4.10以及集成Mysql方法

寫在前面

以前使用lucene,不過使用的是pylucene(能夠理解爲python版的lucene),進行txt文件的檢索和搜索均可以實現,可是在對其進行添加jar包的時候,老是出現問題,所以換一個方向,試一試solr.html

solr簡介

Solr是一個基於Lucene的Java搜索引擎服務器。Solr 提供了層面搜索、命中醒目顯示而且支持多種輸出格式(包括 XML/XSLT 和 JSON 格式)。它易於安裝和配置,並且附帶了一個基於 HTTP 的管理界面。Solr已經在衆多大型的網站中使用,較爲成熟和穩定。java

直入主題

下面直接介紹ubuntu下安裝solr,以及solr和tomcat整合,主要從下面幾個方面介紹: python

  • 1.系統環境介紹mysql

  • 2.Solr/Tomcat安裝web

  • 3.Solr/Tomcat 整合sql

  • 4.Solr集成Mysqlapache

  • 5.總結編程

1.系統環境介紹

本機系統:ubuntu 14.04
solr版本:4.10.2
tomcat版本:7.0
mysql版本 :5.5

2.Solr/Tomcat 安裝

由於在ubuntu系統下,安裝tomcat時候,我直接使用的apt-get命令,能夠自動關聯相對應的包依賴.ubuntu

  • tomcat 安裝
    在此以前請先安裝好JDK,此處再也不贅述,固然要注意選擇JDK版本和機器版本相匹配.瀏覽器

    sudo apt-get install tomcat7

使用apt-get好處是簡單方便,沒必要考慮太多的依賴項,可是也會出現一個問題,就是tomcat的配置文件會分散在不一樣的文件夾中,這個問題在後來配置solr和tomcat整合時,須要多當心.
也有文章說,用apt-get命令安裝的tomcat,在用eclipse時候會須要進行特殊的設置,以後須要驗證一下.(在這本博客時候,還沒開始使用eclipse編程).

基於前車可鑑,我仍是建議直接選擇二進制下載tomcat,使用命令解壓安裝tomcat.畢竟下載解壓安裝也是很方便的. 這裏能夠參考資料Ubantu下用apt-get形式安裝tomcat


記錄:
/etc/tomcat7 環境配置,能夠設置tomcat 用戶以及密碼

/var/lib/tomcat7 做爲tomcat的主目錄,webapps存放應用文件

/usr/share/tomcat7 添加lib包,有時solr調用時候缺乏包,須要放在此處

3. Solr/Tomcat 整合

Solr 做爲企業級的服務器,其自帶一個Jetty server,根據solr guide上說能夠不用另外安裝服務器,可直接使用Jetty.在這裏不去評價Jetty server和tomcat的不一樣,由於本機上以前有使用tomcat部署應用,就想着還使用tomcat.
Solr整合Tomcat,總體思路也就是在tomcat中部署應用:

  • 首先,將應用實例部署在tomcat目錄中;
  • 而後,添加相對應的jar包;
  • 其次,修改tomcat和solr配置文件;
  • 最後就是運行實例,如出現錯誤,查看log文件,逐步修改.

(1)solr實例部署在tomcat目錄

sudo cp -r solr-4.10.2/example/webapps/solr.war /var/lib/tomcat7/webapps/
sudo cp -r solr-4.10.2/example/solr /opt

須要注意 tomcat根目錄下必須是solr.war

(2)添加相對應的jar包

sudo cp -r /opt/solr-4.10.2/example/lib/ext/* /usr/share/tomcat7/lib/
sudo cp -r  /mnt/solr-4.10.2/example/resources/log4j.properties /usr/share/tomcat7/lib/

(3)修改tomcat和solr配置文件

*修改solr配置:

cd /opt/solr
sudo mkdir data
sudo chmod a+w data
sudo gedit  collection1/conf/solrconfig.xml

<dataDir>${solr.data.dir:}</dataDir>改成

<dataDir>${solr.data.dir:/opt/solr/data}</dataDir>

*修改tomcat配置

sudo gedit /etc/tomcat7/Catalina/locathost/solr.xml

添加下面內容:

<?xml version="1.0" encoding="UTF-8"?>
    <Context docBase="/var/lib/tomcat7/webapps/solr.war" debug="0" crossContext="true"> 
     <Environment name="solr/home" type="java.lang.String" value="/opt/solr/data" override="true" />
    </Context>

重啓tomcat7,solr.war將會解壓一個solr目錄,而後進行修改:

sudo service tomcat7 restart
sudo gedit /var/lib/tomcat7/webapps/solr/WEB-INF/web.xml

修改/var/lib/tomcat7/webapps/solr/WEB-INF/web.xml將

<env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>/put/your/solr/home/here</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

改成

<env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>/opt/solr</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

而後在瀏覽器中輸入: 127.0.0.1:8080/solr 就能夠進入solr後臺管理界面.
這裏寫圖片描述

**注意事項**
在安裝的時候,會出現問題,這個時候不要着急,先查看log文件,ubuntu上log文件存放在/var/log中.通常狀況下,log會將問題暴露.

4.Solr集成Mysql

solr至關於對lucene進行完整封裝,所以其完成搜索功能也是同類思路:(1)創建索引(2)進行搜索 .所以這裏準備對mysql進行搜索,將其做爲數據源進行輸入.
須要進行的操做:

  • 下載Mysql-connection-java.jar 包
  • 配置數據源
  • 配置dataimport handler(DIH)
  • 重啓solr

(1)下載solr的mysql數據驅動包
乖乖的到官網下載 http://dev.mysql.com/downloads/connector/j/ ,能夠選擇最新版本(這裏選擇的是mysql-connector-java-5.1.22-bin.jar). 打開速度有些慢,有時不太穩定,若有須要可留言發給你.

下載後解壓,要用到其中的jar包 ,將jar包添加到tomcat的lib中:

sudo cp mysql-connector-java-5.1.22-bin.jar /usr/share/tomcat7/lib

(2)配置數據源
進入solrconfig.xml文件目錄下,建立mysql-data-config.xml:

cd /opt/solr/collection1/conf
sudo gedit mysql-data-config.xml

根據須要添加新內容:

<dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" user="用戶名" password="密碼"/>
    <document>
        <entity name="表名" transformer="HTMLStripTransformer" 
               query="SELECT id, title, content FROM 表名">
                <field column="id" name="id" />
                <field column="title" name="title" />
                <field column="content" name="content" stripHTML="true" />
        </entity>
    </document>
</dataConfig>

在這裏使用com.mysql.jdbc.Driver進行mysql鏈接,經過xml裏面配置sql語句.

(3)配置dataimport handler

打開solr管理後臺,選擇相應的core,選擇Dataimport.第一次打開,會提示sorry, no dataimport-handler defined!

編輯solrconfig

sudo gedit solr-4.10.2/example/solr/collection1/conf/solrconfig.xml

添加以下代碼:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  <lst name="defaults">
    <str name="config">/opt/solr/collection1/conf/mysql-data-config.xml</str>
  </lst>
</requestHandler>

(4)重啓solr管理界面

選擇實例 --> 添加DIH -->執行Execute


在安裝solr和與mysql進行集成的時候,會出現一些問題,下面講簡單統計一些問題解決方法:

(1)SolrResourceLoader Can't find (or read) directory to add to classloader: ../../../contrib/extraction/lib
查看:http://blog.csdn.net/cywosp/article/details/38965981

(2) For security reasons, SolrResourceLoader cannot load files from outside the instance's directory
查看: http://www.devnote.cn/article/237.html

(3)java.lang.ClassNotFoundException:org.apache.solr.handler.dataimport.DataImportHandler
查看:http://www.devnote.cn/article/87.html


總結:在進行安裝的時候,首先要注意版本問題,版本不一樣可能會出現意想不到的錯誤;遇到出錯時候,要先查看log日誌,根據log搜找解決方案;如今使用mysql做爲數據源,後續使用本地文件(如pdf,ppt,word等)做爲數據源.

參考資料:
(1)點滴記錄(裏面記錄頗有價值)
http://blog.csdn.net/cywosp/article/details/38965981
(2)solr中國
http://www.solr.cc/
(3)solr guide
https://cwiki.apache.org/confluence/display/solr/Apache+Solr+Reference+Guide;jsessionid=268B85057ECFDE67C14AECB6BB864B09
(4)Devnote
http://www.devnote.cn/article/28.html
(5)solr入門
http://blog.csdn.net/liuzhenwen/article/details/4060922

相關文章
相關標籤/搜索