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、 重建索引
測試