CentOS7.5 Linux搭建全文檢索--Solr7.4.0單機服務

一.Solr安裝環境

1.官方參考文檔

Solr教程參考指南:http://lucene.apache.org/solr/guide/7_4/solr-tutorial.htmlhtml

2.Solr運行環境

系統要求:Java 8+      這裏咱們把solr服務部署到Tomacat服務器中,Tomcat安裝過程參考:http://www.javashuo.com/article/p-nizbhchp-ko.htmljava

在solr5之前solr的啓動都有tomcat做爲容器,可是從solr5之後solr內部集成jetty服務器,能夠經過bin目錄中腳本直接啓動。就是從solr5之後跟solr4最大的區別是被髮布成一個獨立的應用。node

3.Solr下載

 下載地址:http://archive.apache.org/dist/lucene/solr/
mysql

[admin@node21 software]$ wget http://archive.apache.org/dist/lucene/solr/7.4.0/solr-7.4.0.tgz
[admin@node21 software]$ ll
-rw-rw-r-- 1 admin admin 167346886 Jun 19 02:51 solr-7.4.0.tgz

二.Solr單機安裝

1. 解壓安裝包

[admin@node21 software]$ tar zxvf solr-7.4.0.tgz 
[admin@node21 software]$ ls solr-7.4.0
bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt server

2.部署solr到tomcat下

注意,這裏由於我用的是solr7.4最新版,因此跟solr4版本要拷貝*.war文件,而後再啓動tomcat解壓的操做是不同的 ,git

1)複製並重命名solr目錄裏的server/solr-webapp/webapp文件夾到/usr/local/tomcat8/webapps/solrgithub

[admin@node21 software]$ sudo cp -r solr-7.4.0/server/solr-webapp/webapp /usr/local/tomcat8/webapps/solr

2)拷貝solr-7.4.0\server\lib\ext 下的jar包以及lib目錄下gmetric4j-1.0.7.jar和metrics開頭的jar包拷貝到 tomcat8\webapps\solr 項目的WEB-INF\lib下web

[admin@node21 software]$ sudo cp solr-7.4.0/server/lib/ext/* /usr/local/tomcat8/webapps/solr/WEB-INF/lib/
[admin@node21 software]$ sudo cp solr-7.4.0/server/lib/gmetric4j-1.0.7.jar /usr/local/tomcat8/webapps/solr/WEB-INF/lib/
[admin@node21 software]$ sudo cp solr-7.4.0/server/lib/metrics-*  /usr/local/tomcat8/webapps/solr/WEB-INF/lib/

3)建立一個索引庫solrhomesql

拷貝solr-7.4.0\server 下的solr文件夾到其它非中文目錄下,重命名爲solrhome,我是創建到了/usr/local/tomcat8/solrhome下數據庫

[admin@node21 software]$ sudo cp -r solr-7.4.0/server/solr /usr/local/tomcat8/solrhome

4)關聯solr及索引庫solrhome,須要修改tomcat裏solr工程的web.xml文件apache

[admin@node21 software]$ sudo vi /usr/local/tomcat8/webapps/solr/WEB-INF/web.xml 

找到以下代碼,打開註釋,修改本身的solrhome的路徑/put/your/solr/home/here,個人是 /usr/local/tomcat8/solrhome 路徑。

複製代碼
40   <!--
41     <env-entry>
42        <env-entry-name>solr/home</env-entry-name>
43        <env-entry-value>/put/your/solr/home/here</env-entry-value>
44        <env-entry-type>java.lang.String</env-entry-type>
45     </env-entry>
46    -->
複製代碼

以下圖:

而後到最下方,將這一段註釋掉,否則會報403錯誤,完成後保存退出(solr4部署不用註釋這個)

5)拷貝solr7.4.0\server\resources下的 log4j2.xml 到tomcat8/webapps/solr/WEB-INF\classes,若是WEB-INF下沒有classes文件那麼就建立一個classes文件夾 

[admin@node21 tomcat8]$ sudo mkdir -p /usr/local/tomcat8/webapps/solr/WEB-INF/classes/
[admin@node21 tomcat8]$ sudo cp -r /opt/software/solr-7.4.0/server/resources/log4j2.xml /usr/local/tomcat8/webapps/solr/WEB-INF/classes/

6)修改tomcat的bin目錄下catalina.bat腳本,增長solr.log.dir系統變量,指定solr日誌記錄存放地址。

[root@node21 solr]# vi /usr/local/tomcat8/bin/catalina.sh 
JAVA_OPTS="$JAVA_OPTS -Dsolr.log.dir=/usr/local/tomcat8/solrhome/logs"

3.啓動服務 

啓動tomcat,訪問須要完整路徑,個人是http://node21:8080/solr/index.html

4.配置solr的索引庫core

1)點擊Core Admin,接着點擊Add Core這項,建立的instanceDir和dataDir 需存在,報錯以下。(Solr裏面的core就像數據庫裏面的一個表,用來管理索引和相關配置。)

2)在索引庫目錄solrhome下建立new_core目錄,拷貝配置文件到new_core目錄下

[admin@node21 tomcat8]$ su root
[root@node21 tomcat8]$  mkdir /usr/local/tomcat8/solrhome/new_core 
[root@node21 solrhome]$ cp -r /usr/local/tomcat8/solrhome/configsets/sample_techproducts_configs/conf  /usr/local/tomcat8/solrhome/new_core/

而後重啓tomcat服務,從新建立core成功

5.配置IK中文分詞器

項目地址:https://github.com/magese/ik-analyzer-solr7

內置的分詞器不支持停用,擴展功能,ik中文分詞器支持屏蔽關鍵詞、新詞彙的配置。下載地址:https://pan.baidu.com/s/1vxs98d440NSQIqjc50w1Rw,密碼:9dbe

解壓分詞器安裝包

[root@node21 software]# unzip ikanalyzer-solr6.5.zip  
[root@node21 software]# lsikanalyzer-solr5 ikanalyzer-solr6.5.zip
[root@node21 software]# ls ikanalyzer-solr5/
ext.dic  IKAnalyzer.cfg.xml  ik-analyzer-solr5-5.x.jar  solr-analyzer-ik-5.1.0.jar  stopword.dic

1)將IK分詞器 JAR 包拷貝到Tomcat8\webapps\solr\WEB-INF\lib下

[root@node21 ikanalyzer-solr5]# cp ik-analyzer-solr5-5.x.jar solr-analyzer-ik-5.1.0.jar /usr/local/tomcat8/webapps/solr/WEB-INF/lib/

2)將詞典 配置文件拷貝到 Tomcat8\webapps\solr\WEB-INF\classes下

[root@node21 ikanalyzer-solr5]# cp ext.dic IKAnalyzer.cfg.xml stopword.dic /usr/local/tomcat8/webapps/solr/WEB-INF/classes/

3)更改在Tomcat8\solr_h\solrhome\new_core\conf找到managed-schema配置文件,末尾添加如下保存

複製代碼
[root@node21 ikanalyzer-solr5]# vi /usr/local/tomcat8/solrhome/new_core/conf/managed-schema 
<!--IK中文分詞器-->
 <fieldType name="text_ik" class="solr.TextField">  
        <analyzer type="index" useSmart="false"
            class="org.wltea.analyzer.lucene.IKAnalyzer" />
        <analyzer type="query" useSmart="true"
            class="org.wltea.analyzer.lucene.IKAnalyzer" />
</fieldType> 
複製代碼

4)重啓tomcat服務,測試

6. 中止服務

若是要關閉solr服務,直接關閉tomcat就能夠了。

三.Solr集羣版

solr集羣搭建參考:http://www.javashuo.com/article/p-svunygwj-e.html 

四.配置Solr服務器導入數據庫數據

步驟:

(1)導包

首先是須要在solr的核心庫中添加一些導入數據的包,須要以下:

 

注意:由於在collection中,最初是沒有lib這個文件目錄的,因此須要本身建立一個lib目錄,而後把相應的jar包添加進去。

(2)在collection中的config目錄下的solrconfig.xml中添加數據導入處理器

1 <requestHandler name="/dataimport" 
2 class="org.apache.solr.handler.dataimport.DataImportHandler">
3 <lst name="defaults">
4 <str name="config">data-config.xml</str>
5 </lst>
6 </requestHandler>

(3)在collection中的config目錄添加一個data-config.xml(這個與上面一步配置的名字要相同)

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <dataConfig>
 3 <dataSource type="JdbcDataSource"
 4 driver="com.mysql.jdbc.Driver"
 5 url="jdbc:mysql://localhost:3306/須要導入數據的數據庫名"
 6 user="數據庫帳號"
 7 password="數據庫密碼"/>
 8 <document>
 9 <entity name="product" query="SELECT pid,name,catalog_name,price,description,picture FROM products">
10 <field column="pid" name="id" />
11 <field column="name" name="product_name" />
12 <field column="catalog_name" name="product_catalog_name" />
13 <field column="price" name="product_price" />
14 <field column="description" name="product_description" />
15 <field column="picture" name="product_picture" />
16 </entity>
17 </document>
18 </dataConfig>

備註:上面的內容,其實一看就大致明白了什麼意思,主要就是配置要導入哪一個數據庫,導入的字段有什麼,若是不配置的話,那麼solr服務器是沒法判斷獲得的字段的,因此須要進行配置,至關於一個映射配置。

注意:我上面的entity裏面的內容就是我須要導入數據的字段的些內容,因此,根據需求進行自行匹配。

(4)在collection中config目錄下的schema.xml添加以下內容:(這個是爲了可以便於對導入數據庫中的數據,與solr中的域進行匹配,由於咱們都知道,若是solr域中不存在相應的域,那麼是沒法進行查詢修改刪除操做的,那麼就不利於咱們在之後的項目中對數據庫相應字段的處理,因此,這一步是無關緊要,可是配置了就有不少的好處)

1 <!--配置從數據庫導入到sorl中的數據的字段內容,因此每次要從數據庫導入什麼就須要配置什麼-->
2 <field name="product_name" type="text_ik" indexed="true" stored="true"/>
3 <field name="product_price" type="float" indexed="true" stored="true"/>
4 <field name="product_description" type="text_ik" indexed="true" stored="false"/>
5 <field name="product_picture" type="string" indexed="false" stored="true"/>
6 <field name="product_catalog_name" type="string" indexed="true" stored="true"/>
7 <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true" />
8 <copyField source="product_name" dest="product_keywords" />
9 <copyField source="product_description" dest="product_keywords" />

(5)重啓tomcat,而後登錄solr服務

(6)進行添加數據的處理

 

 

(7)點擊上面圖中的Execute按鈕便可進行數據的導入了,而後再進去Query就可查詢到導入的數據了哦!!

或者:http://localhost:8080/solr/collection1/dataimport?command=full-import

 

五.安裝過程問題 

1.警告Max Processes Limit

最大限制用戶進程數,我的電腦低配,因爲系統須要更改設置

查看我的最大限制用戶進程數 ulimit -u

[root@node21 software]# vi /etc/security/limits.conf
末尾添加以下兩行信息,保存退出,從新登陸生效
* soft nproc 65535
* hard nproc 65535

或者根據官網的建議,在solr.in.sh中設置SOLR_ULIMIT_CHECKS=false 。

 

官方老版本solr整合tomcat安裝過程參考: https://wiki.apache.org/solr/SolrTomcat

相關文章
相關標籤/搜索