Sorl 7.4.0 快速搭建

                                                                                         Sorl 7.4.0

  1.    前言:在solr5以前solr的啓動都有tomcat作爲容器,但是從solr5以後solr內部集成jetty服務器,可以通過bin目錄中腳本直接啓動。就是從solr5以後跟solr4最大的區別是被髮布成一個獨立的應用。在solr5之後solr其實特別容易安裝,有安裝包,之後在解壓,直接啓動bin下solr,solr就這樣完成的啓動了。

        注意:solr7只能安裝在jdk1.8以上的環境中。

  1. 下載上傳so'l'r.zip文件下載zip解壓工具(前提是sorl擴展名是zip)

安裝命令:

yum install -y unzip zip

解壓到當前文件夾:unzip file.zip

進入解壓的sorl的bin目錄中啓動solr即可

  1. 關閉防火牆的命令:
  2. systemctl stop firewalld.service #停止firewall
  3. systemctl disable firewalld.service #禁止firewall開機啓動
  4. firewall-cmd --state #查看默認防火牆狀態(關閉後顯示notrunning,開啓後顯示running)
  5.    開啓端口的命令:
  6. firewall-cmd --zone=public --add-port=8983/tcp --permanent    (--permanent永久生效,沒有此參數重啓後失效)

Centos查看端口占用情況命令,比如查看80端口占用情況使用如下命令: 

lsof -i tcp:80

列出所有端口

netstat -ntlp

  1. 到目前爲止solr7安裝完成!

                                                                配置solr的核心內容(core)

方法一:點擊Core Admin,接着點擊Add Core這項,點完之後會出現問題,但是會自動創建new-core目錄。

提示缺少配置文件:Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused by: Can't find resource 'solrconfig.xml' in classpath or '/data/soft/solrhome/new_core'

解決方法:拷貝server/solr/configsets/_default/下的conf文件夾到solrhome/new_core文件夾下

3.點擊Add Core,此時會顯示添加成功。

方法二:在啓動solr服務的情況下執行以下

進入sorl直接啓動bin下solr的命令:./solr create -c (core名字) -force

即可創建一個core

                                                                配置中文分詞

小知識點)Vi(vim是vi的升級版)裏搜索關鍵字,在命令模式下敲斜杆( / )這時在狀態欄,然後輸入你要查找的關鍵字敲回車就可以了,敲字符 n 就可以繼續查找了。

solr6以後就有自帶的中文分詞器(core裏面conf配置)

引入自帶分詞的jar配置在solrconfig.xml文件中(如果core中的lib存在jar就不用此配置)

 <!-- for HMMChineseTokenizerFactory 分詞jar-->

  <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs/" regex="lucene-analyzers-smartcn-\d.*\.jar" />

 

positionIncrementGap=100  含義:只對 multiValue = true 的fieldType有意義。

在</schema>前增加下面的內容

<fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="0">
    <analyzer type="index">
      <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
    </analyzer>
    <analyzer type="query">
       <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
    </analyzer>
</fieldType>


配置添加數據庫數據(在core裏的conf中的solrconfig.xml裏面添加

在xml中75行處添加jar文件

<!-- 引入數據所需架包jar -->

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

mysql-connector-Java-*-bin.jar包放入到創建的core的lib中(根據版本自行選擇)
創建data-config.xml文件並引入:

  <!-- import  date 導入mysql數據-->

    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">

    <lst name="defaults">

      <str name="config">data-config.xml</str>

     </lst>

  </requestHandler>


conf目錄下新建data-config.xml

<?xml version="1.0" encoding="UTF-8" ?>  

<dataConfig>

<!--配置數據源-->   

<dataSource type="JdbcDataSource"   

          driver="com.mysql.jdbc.Driver"   

          url="jdbc:mysql://rm-uf6ilhn6at832n7v7ao.mysql.rds.aliyuncs.com/pearshare?serverTimezone=UTC&autoReconnect=true"   

          user="root"   

          password="Lifenxiang2018@"/>   

<!--query中寫SQL語句-->        

<document>   

<!-- column對應數據庫中的列名,name爲對應的域名(在scheme中沒有的話需要配置,即設置業務系統域),

這是一個映射關係 -->

<!--deltaQuery語句查出所有被修改的數據的ID, deltaImportQuery對deltaQuery查出來的ID的數據進行索引更新並附加query的條件-->

<!--全量索引-->

<entity name="allShare" pk="id"

 

query="SELECT s.id, IF(s.cover = '', SUBSTRING_INDEX(s.imgs, ',', 1), s.cover) AS cover, s.title, s.sub_title, s.collection_number, s.last_modify_time, uu.user_id, uu.avatar, uu.nickname, IF(g.end_time >= UNIX_TIMESTAMP(now()) AND g.begin_time <= UNIX_TIMESTAMP(now()),'1','0') as groupStatus, g.activity_amt, IF(g.end_time >= UNIX_TIMESTAMP(now()) AND g.begin_time <= UNIX_TIMESTAMP(now()),g.id,'') AS goodsId FROM share as s LEFT JOIN ucenter_user AS uu ON s.user_id = uu.user_id LEFT JOIN goods AS g ON s.goods_id = g.id WHERE s.status != '1' AND s.enabled != 1"

 

deltaImportQuery="SELECT s.id, IF(s.cover = '', SUBSTRING_INDEX(s.imgs, ',', 1), s.cover) AS cover, s.title, s.sub_title, s.collection_number, s.last_modify_time, uu.user_id, uu.avatar, uu.nickname, IF(g.end_time >= UNIX_TIMESTAMP(now()) AND g.begin_time <= UNIX_TIMESTAMP(now()),'1','0') as groupStatus, g.activity_amt, IF(g.end_time >= UNIX_TIMESTAMP(now()) AND g.begin_time <= UNIX_TIMESTAMP(now()),g.id,'') AS goodsId FROM share as s LEFT JOIN ucenter_user AS uu ON s.user_id = uu.user_id LEFT JOIN goods AS g ON s.goods_id = g.id WHERE s.id ='${dih.delta.id}'"

 

deltaQuery="SELECT s.id FROM share as s LEFT JOIN ucenter_user AS uu ON s.user_id = uu.user_id LEFT JOIN goods AS g ON s.goods_id = g.id WHERE s.last_modify_time > '${dataimporter.last_index_time}'"

 

deletedPkQuery="SELECT id FROM share WHERE status = '1' OR enabled = 1">

 

<field column="id" name="id" />

<field column="cover" name="share_cover" />

<field column="title" name="share_title" />

<field column="sub_title" name="share_sub_title" />

<field column="collection_number" name="share_collectionsNum" />

<field column="last_modify_time" name="lastModifyTime" />

<field column="user_id" name="share_userId" />

<field column="avatar" name="share_avatar" />

<field column="nickname" name="share_nickname" />

<field column="groupStatus" name="share_group_status" />

<field column="activity_amt" name="share_goodsAmt" />

<field column="goodsId" name="goodsId" />

<field column="status" name="status" />

<field column="enabled" name="enabled" />

</entity>

</document>

</dataConfig>

字段名(query deltaImportQuery deltaQuery deletePkQuery

詳解:https://img-blog.csdn.net/20180222174218226

                                    Solr定時增量更新

使用contos的定時任務

打開定時任務的配置文件:crontab -e

配置參數:

*/1 * * * * /usr/bin/curl -G http://地址:端口/solr/創建的core名稱/dataimport?command=delta-import&clean=false&commit=true &

查看配置的定時任務:crontab -l

重啓定時任務:sudo /usr/sbin/crond restart

如果出錯:rm -rf /var/run/crond.pid

再執行:sudo /usr/sbin/crond start

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章