Solr5安裝配置

Solr安裝配置java

1、Oracle VM VirtualBox配置mysql

一、  網絡web

二、  修改網絡ipsql

cd /etc/sysconfig/network-scripts/數據庫

vim ifcfg-enp0s3apache

 

TYPE=Ethernetvim

BOOTPROTO=static瀏覽器

DEFROUTE=yestomcat

PEERDNS=yes網絡

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

NAME=enp0s3

UUID=6d52495e-785f-4e0f-b77e-d5f502578ff6

DEVICE=enp0s3

ONBOOT=yes

IPADDR=192.168.1.110

GATEWAY=192.168.1.1

NETMASK=255.255.255.0

DNS1=119.6.6.6

DNS2=114.114.114.114

三、  重啓下網絡服務:service network restart

2、jdk安裝

一、  yum -y list java*

二、  使用root用戶安裝

三、  yum -y install java-1.7.0-ipenjdk*

四、  java –version

3、安裝tomcat

一、  解壓:tar xvf apache-tomcat-7.0.68.tar.gz

二、  移動解壓後的tomcat:mv apache-tomcat-7.0.68 /home/dev/solr-tomcat

三、  清空webapps

4、運行solr5

一、  解壓縮solr,將solr-5.3.0  D:\solr\solr-5.3.0\server\solr-webapp下的webapp

二、  上傳webapp更名爲solr

三、  將solr-5.3.0\server\lib\ext下的jar包拷入\webapps\solr\WEB-INF\lib下。

四、  \solr-5.3.0\server\resources下的log4j.properties拷入\webapps\solr\WEB-INF\classes下

五、      solr-5.3.0\server\solr拷貝到/home/dev/solr盤,重命名solrhome

六、  編輯\webapps\solr\WEB-INF\下的web.xml放開env-entry標籤,並修改env-entry-value的值爲/home/dev/solrhome

 

七、  關閉防火牆:systemctl stop firewalld.service #中止 systemctl disable firewalld.service #禁用

八、  進入bin目錄,運行./startup.sh

九、  查看日誌:tail -f /home/dev/solr-tomcat/logs/catalina.out

十、              瀏覽器:http://192.168.1.110:8080/solr/#/

5、配置solr5

一、  提高tomcat啓動權限:chmod a+x *.sh

二、  修改solrhome的權限:chown -R dev:dev solrhome/

三、  拷貝basic_configs到/home/dev/solrhome並重命名att_core

四、  Add core

6、smart分詞配置

一、  將\solr-5.3.0\contrib\analysis-extras\lucene-libs下的lucene-analyzers-smartcn-5.3.0.jar複製到\webapps\solr\WEB-INF\lib目錄下

二、  選擇核心目錄用文本編輯器打開\solrhome\att_core\conf\schema.xml,並添加以下配置信息:

<fieldType name="text_smart" class="solr.TextField" positionIncrementGap="100">

          <analyzer type="index">

            <tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/>

            <filter class="solr.SmartChineseWordTokenFilterFactory"/>

          </analyzer>

          <analyzer type="query">

            <tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/>

            <filter class="solr.SmartChineseWordTokenFilterFactory"/>

          </analyzer>

    </fieldType>

8、拼音分詞

一、  安裝jar包到\webapps\solr\WEB-INF\lib中

二、  在schema.xml中添加

<fieldType name="text_pinyin" class="solr.TextField">

        <analyzer type="index">

            <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>

            <filter class="org.apache.lucene.analysis.pinyin.solr5.PinyinTokenFilterFactory"

                firstChar="false" minTermLenght="2"/>

            <filter class="org.apache.lucene.analysis.pinyin.solr5.PinyinNGramTokenFilterFactory"

                nGramChinese="false" nGramNumber="false"/>

        </analyzer>

        <analyzer type="query">

            <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>

            <filter class="org.apache.lucene.analysis.pinyin.solr5.PinyinTokenFilterFactory"/>

            <filter class="org.apache.lucene.analysis.pinyin.solr5.PinyinTokenFilterFactory"

                firstChar="false" minTermLenght="2"/>

            <filter class="org.apache.lucene.analysis.pinyin.solr5.PinyinNGramTokenFilterFactory"

                nGramChinese="false" nGramNumber="false"/>

        </analyzer>

    </fieldType>

 

9、DataimportHandler,它能夠把數據從關係數據庫中查詢出來,而後倒入到索引庫中

一、  將\solr-5.3.0\dist\ solr-dataimporthandler-5.3.0.jar拷貝到\webapps\solr\WEB-INF\lib

二、  拷貝mysql-connector-java-5.1.25.jar包到\webapps\solr\WEB-INF\lib

三、  拷貝solr-dataimportscheduler-1.1.jar到\webapps\solr\WEB-INF\lib.

四、  加入\solrhome\att_core\conf\solrconfig.xml:

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

           <lst name="defaults">

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

           </lst>

  </requestHandler>

五、  修改\solrhome\conf \dataimport.properties文件,加入

六、  配置data-config.xml

<dataConfig>

    <dataSource type="JdbcDataSource"

                driver="com.mysql.jdbc.Driver"

                url="jdbc:mysql://192.168.1.113:3306/goshow?characterEncoding=utf-8"

                user="root"

                password="root" />

    <document>

        <entity name="goods_class"   pk="id"

                   query="select id,created,creator,lastUpdater,updated,contentType,fileSize,path,loadFileName,type from go_attachment"   

                   deltaImportQuery="select id,created,creator,lastUpdater,updated,contentType,fileSize,path,loadFileName,type from go_attachment where gc_id='${dataimporter.delta.id}'" 

                   deltaQuery="select id from go_attachment where solr_update_time > '${dataimporter.last_index_time}'"

                   deletedPkQuery="select id FROM go_attachment_delete "

                   >

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

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

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

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

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

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

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

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

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

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

        </entity>

         

     </document>

</dataConfig>

當數據庫中的文檔被刪除時,Solr的索引應該被清除。Entity配置的deletedPkQuery就用於這個目的。

工做原理:

執行deletedPkQuery,獲取當前Entity被刪除的pk;

對deletedRow,執行刪除操做

更新原理:

deltaQuery查詢變化的id

執行deltaImportQuery,獲取自身的數據進行修改;

注意:deletedPkQuery的知道必須是pk的名稱

<dataConfig>

    <dataSource type="JdbcDataSource"

                driver="com.mysql.jdbc.Driver"

                url="jdbc:mysql://127.0.0.1:3306/goshow?characterEncoding=utf-8"

                user="root"

                password="root" />

    <document>

        <entity name="goods_class"   pk="id"

<!--注意這個query查詢只對第一次全量導入有做用,對增量導入不起做用à

                  query="select id,created,creator,lastUpdater,updated,contentType,fileSize,path,loadFileName,type from go_attachment"                 

deltaQuery的意思是,查詢出全部通過修改的記錄的ID ,多是修改操做,添加操做,刪除操做產生的 ,(此查詢只對增量導入起做用,並且只能返回ID值)

deltaQuery="select id from go_attachment where solr_update_time > '${dataimporter.last_index_time}'"

deltaImportQuery查詢是獲取以上兩步的ID,而後把其所有數據獲取,根據獲取的數據,對索引庫進行更新操做,多是刪除,添加,修改(此查詢只對增量導入起做用,能夠返回多個字段的值,通常狀況下,都是返回全部字段的列)                 

deltaImportQuery="select id,created,creator,lastUpdater,updated,contentType,fileSize,path,loadFileName,type from go_attachment where gc_id='${dataimporter.delta.id}'" 

                  deletedPkQuery是刪除索引的數據

                  deletedPkQuery="select id FROM go_attachment_delete "

                  >

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

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

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

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

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

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

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

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

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

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

        </entity>

         

     </document>

</dataConfig>

 

 

七、  配置schema.xml

         <field name="created"  type="date" indexed="true"  stored="true"/>

         <field name="updated"  type="date" indexed="true"  stored="true"/>

         <field name="creator"  type="string"  indexed="true"  stored="true" />

         <field name="lastUpdater"  type="string"  indexed="true"  stored="true" />

         <field name="contentType"  type="string"  indexed="true"  stored="true" />

         <field name="fileSize"  type="int"    indexed="true"  stored="true"/>

         <field name="path"  type="string"  indexed="true"  stored="true" />

         <field name="loadFileName"  type="string"  indexed="true"  stored="true" />

         <field name="type"  type="string"  indexed="true"  stored="true" />

<field name="nameTypeCreator"  type="text_pinyin"  indexed="true"  stored="false"   multiValued="true"/>

         <copyField source="loadFileName" dest="nameTypeCreator"/>

         <copyField source="creator" dest="nameTypeCreator"/>

八、  導入數據

九、  查詢

10、數據庫配置

一、  新建數據庫字段與刪除表

新建go_attachment中的solr_update_time字段

二、  新建刪除數據表go_attachment_delete

三、  編寫觸發器

四、  set new.solr_update_time=CURRENT_TIMESTAMP

五、  set new.solr_update_time=CURRENT_TIMESTAMP

六、  insert into go_attachment_delete(id) values(old.id)

七、  DELETE FROM go_attachment_delete where DATE_SUB(NOW(),INTERVAL 1 DAY)>update_time

八、   DATE_SUB(NOW(),INTERVAL 10 MINUTE)

這表示字段的數值在當前時間前10分鐘的時刻以後,另外1 HOUR表示1小時,1 DAY表示1天。

 

11、       重建索引

測試

相關文章
相關標籤/搜索