solr7.3.1在CentOS7上的安裝


1 solr的下載

從Solr官方網站(http://archive.apache.org/dist/lucene/solr/7.3.1/ )下載Solr最新版本

根據Solr的運行環境,Linux下需要下載solr-7.3.1.tgz,windows下需要下載solr-7.3.1.zip

2 solr的環境

Solr是java開發的,在windows上面和Linux上面的安裝一樣。

windows上面的安裝教程可以參照:http://www.cnblogs.com/jepson6669/p/9053880.html

1.需要安裝jdk【需要jdk1.8及以上版本】

2.安裝環境CentOS7

3.需要安裝tomcat(非必需,可以使用內置的小服務器jetty)

我的環境:

SolrSolr7.3.1

Jdk1.8.0_162

Tomcatapache-tomcat-8.5.31

3 安裝過程

第一步:把solr的壓縮包上傳到Linux系統

第二步:在usr/local/創建solr目錄

# mkdir /usr/local/solr

第三步:解壓solr到剛剛創建的solr目錄下

[root@i soft]# tar -xvf solr-7.3.1.tgz -C /usr/local/solr

第四步:解壓解壓tomcat到solr目錄下

[root@i soft]# tar -xvf apache-tomcat-8.5.31.tar.gz -C /usr/local/solr

第五步:把 solr\solr-7.3.1\server\solr-webapp下的 webapp 文件夾拷貝到tomcat 的webapps下,重命名為solr7,也可以是其他名字

[root@iz solr-webapp]# cp -r webapp /usr/local/solr/apache-tomcat-8.5.31/webapps/

# mv webapp solr7

 

第六步:拷貝solr-7.3.1\server\lib\ext 下的jar包到 tomcat\webapps\solr7 項目的WEB-INF\lib下

[root@i ext]# cp * /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/

第七步:拷貝solr-7.3.1\server\lib\目錄下gmetric4j-1.0.7.jar,以及以metrics開頭的jar包拷貝到WEB-INF\lib下

[root@i lib]# cp gmetric4j-1.0.7.jar /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/
[root@iz lib]# cp metrics-*.* /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/

另外還需要拷貝/usr/local/solr/solr/dist下面的以solr-dataimporthandler開頭的jar包WEB-INF\lib下

 

[root@ dist]# cp /usr/local/solr/solr/dist/solr-dataimporthandler-*.* /usr/local/solr/tomcat/webapps/solr7/WEB-INF/lib/

 

第八步:拷貝solr-7.3.1\server 下的solr文件夾到/usr/local/solr目錄下,重命名為solrhome。

[root@i server]# cp -r solr /usr/local/solr/
[root@iz solr]# mv solr solrhome

 

第九步:關聯solr和solrhome.需要修改tomcat\webapps\ solr7\WEB-INF\web.xml

第十步:解決日志不能夠正常顯示問題

1.在/sor7/WEB-INF/下面創建一個classes文件夾

 

2.拷貝solr7.3.1\server\resources下的log4j.properties到剛剛創建的classes目錄下。

 3.在/usr/local/solr/創建一個logs文件夾

4.修改log4j.properties文件

 

第十一步:修改tomcat的端口,避免沖突

第十二步:啟動tomcat,訪問solr時后面記得加上“index.hmtl”

 

4 HTTP Status 403 – Forbidden解決

修改/usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/web.xml文件。

然后重啟tomcat.

然后訪問終於看到了歡迎頁面:

這也就是說明安裝成功了。

5 不能添加核心的解決

1 事故現場

name:自定義的名字,建議和instanceDir保持一致

instanceDir:solrhome目錄下的示例類目

dataDir:默認填data即可

config:指定配置文件,/usr/local/solrhome/new_core/conf/solrconfig.xml

schema:指定schema.xml文件,new_core/conf/schema文件(實際上是managed-schema文件)

注意!在schema.xml下面有一個感嘆號!

 

如果你不管他,直接點擊Add Core會提示solrconfig.xml文件找不到

2 事故解決

第一步:進入到solrhome/new_core目錄,復制/solr-7.3.1/server/solr/configsets/_default/conf文件夾到new_core目錄下

[root@i new_core]# cp -r /usr/local/solr/solr-7.3.1/server/solr/configsets/_default/conf ./

第二步:切換到solrhome目錄,復制/usr/local/solr/solr-7.3.1/contrib文件夾到solrhome目錄下

[root@i solrhome]# cp -r  /usr/local/solr/solr-7.3.1/contrib/ ./

第三步: 復制solr-7.3.1/dist文件夾到solrhome目錄下

[root@iz2ze7k6ycnx8b40ynghxtz solrhome]# cp -r /usr/local/solr/solr-7.3.1/dist/ ./

第四步:修改核心配置文件solrhome/new_core/conf/solrconfig.xml,

主要是修改contrib目錄,dist目錄的相對位置。

  <lib dir="${solr.install.dir:..}/contrib/extraction/lib" regex=".*\.jar" />
  <lib dir="${solr.install.dir:..}/dist/" regex="solr-cell-\d.*\.jar" />

  <lib dir="${solr.install.dir:..}/contrib/clustering/lib/" regex=".*\.jar" />
  <lib dir="${solr.install.dir:..}/dist/" regex="solr-clustering-\d.*\.jar" />

  <lib dir="${solr.install.dir:..}/contrib/langid/lib/" regex=".*\.jar" />
  <lib dir="${solr.install.dir:..}/dist/" regex="solr-langid-\d.*\.jar" />

  <lib dir="${solr.install.dir:..}/contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="${solr.install.dir:..}/dist/" regex="solr-velocity-\d.*\.jar" />

第五步:重啟服務即可正常創建Core,然后instanceDir文件夾(new_core)里會自動生成一個core.properties文件

 

new_core文件夾里面的內容如下:

core.properties文件中的內容如下:

到這里就解決了不能添加核心問題。

3 補充

以后再次需要創建solrCore核心的時候,就不用這么麻煩了。

可以直接復制第一創建的new_core目錄,修改core.properties文件中的name即可

6 ikanalyzer 中文分詞器

准備好Ikanalyzer文件,目錄結構如下:

里面包括IK Analyzer 2個架包:ik-analyzer-solr5-5.x.jar、solr-analyzer-ik-5.1.0.jar

IK配置文件 IKAnalyzer.cfg.xml、ext.dic、stopword.dic

第一步:拷貝ik-analyzer-solr5-5.x.jar到/usr/local/solr/tomcat/webapps/solr7/WEB-INF/lib目錄下面

第二步:拷貝ext.dic ,stopword.dic,ikAnalyzer.cfg.xml到/usr/local/solr/tomcat/webapps/solr7/WEB-INF/classes目錄下面。

前面的安裝過程中我已經創建過classes目錄,如果沒有的話,創建一個。

ikAnalyzer.cfg.xml文件內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
    <comment>IK Analyzer 擴展配置</comment>
    <!--用戶可以在這里配置自己的擴展字典 -->
    <entry key="ext_dict">ext.dic;</entry> 
    
    <!--用戶可以在這里配置自己的擴展停止詞字典-->
    <entry key="ext_stopwords">stopword.dic;</entry> 
    
</properties>

ext.dic里面添加新詞匯:比如“王者榮耀”這類的。

stopword.dic里面添加不需要分詞的詞語,比如 “的 了  個 你 我 他”

第三步:修改/usr/local/solr/solrhome/new_core/conf下面的managed-schema文件。

 1.添加一個自定義的fieldType

<!-- IKAnalyzer-->
<fieldType name="text_ik" class="solr.TextField">
     <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

2.定義一個field,指定field的Type屬性為text_ik

<!--IKAnalyzer Field-->
<field name="title_ik" type="text_ik" indexed="true" stored="true" />
<field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>

配置完成后的效果如下:

第四步:重啟tomcat,讓配置生效

第五步:測試

 

7  拼音分詞器的安裝

首先需要准備好拼音分詞器所需的jar包。

另外還需要用到第六步的ikanalyzer 中文分詞器里面的一個jar包。

第一步:將solr-analyzer-ik-5.1.0.jar,pinyinAnalyzer4.3.1.jar,pinyin4j-2.5.0.jar三個jar包

導入到/usr/local/solr/tomcat/webapps/solr7/WEB-INF/lib目錄下面。

 

第二步:修改/usr/local/solr/solrhome/new_core/conf下面的managed-schema文件

 在其中加入下面的內容

     <!-- IK 拼音分詞 -->
     <fieldType name="text_pinyin" class="solr.TextField" positionIncrementGap="0">
        <analyzer type="index">
            <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory"/>
            <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
            <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
        </analyzer>
        <analyzer type="query">
            <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory"/>
            <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
            <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
        </analyzer>
     </fieldType>

 

第三步:重啟tomcat,查看效果

 

8 使用dataimport插件批量導入數據

配置前的效果

第一步:把dataimport插件的依賴的jar包添加到/usr/local/solr/solrhome/contrib/dataimporthandler/lib下,lib目錄沒有就創建一個

jar包的位置:

第二步:導入數據庫的驅動包到/usr/local/solr/solrhome/contrib/dataimporthandler/lib下

數據的jar包需要自己去找。

一二兩步后的效果:

 第三步:修改/usr/local/solr/solrhome/new_core/conf下面的solrconfig.xml配置文件,添加一個requestHandler

<lib dir="${solr.install.dir:..}/contrib/dataimporthandler/lib" regex=".*\.jar" />
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">data-config.xml</str>
     </lst>
</requestHandler> 

第四步:創建一個data-config.xml文件保存到/usr/local/solr/solrhome/new_core/conf目錄下

# vim data-config.xml

里面的內容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"
          driver="com.mysql.jdbc.Driver"
          url="jdbc:mysql://39.105.94.154:3306/lucene"
          user="tom"
          password="tom"/>
<document>
    <entity name="product" query="SELECT pid,name,catalog_name,price,description,picture FROM products ">
         <field column="pid" name="id"/>
         <field column="name" name="product_name"/>
         <field column="catalog_name" name="product_catalog_name"/>
         <field column="price" name="product_price"/> 
         <field column="description" name="product_description"/>
         <field column="picture" name="product_picture"/>
    </entity>
</document>
</dataConfig>

dataSource和entity里面的內容根據自己的實際情況修改.

對於沒有的域需要自己配置。

  <!--product-->
   <field name="product_name" type="text_ik" indexed="true" stored="true"/>
   <field name="product_price"  type="float" indexed="true" stored="true"/>
   <field name="product_description" type="text_ik" indexed="true" stored="false" />
   <field name="product_picture" type="string" indexed="false" stored="true" />
   <field name="product_catalog_name" type="string" indexed="true" stored="true" />

   <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
   <copyField source="product_name" dest="product_keywords"/>
   <copyField source="product_description" dest="product_keywords"/>

在managed-schema文件中加入上面的代碼,效果如下

第五步:重啟tomcat,讓配置生效

 

第六步:點擊Execute按鈕導入數據。

勾選Auto-Refresh Status 可以自動刷新,看到導入的狀態

 

入數據前會先清空索引庫,然后再導入。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM