Solr5安装配置

Solr安装配置

一、Oracle VM VirtualBox配置

1、  网络

172418_qqZg_2876959.png

2、  修改网络ip

cd /etc/sysconfig/network-scripts/

vim ifcfg-enp0s3

172439_zpul_2876959.png

 

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

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

172530_fO6X_2876959.png

3、  重启下网络服务:service network restart

二、jdk安装

1、  yum -y list java*

172547_Do7X_2876959.png

2、  使用root用户安装

172553_1hM7_2876959.png

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

172605_ugTr_2876959.png

4、  java –version

172612_bJuI_2876959.png

三、安装tomcat

1、  解压:tar xvf apache-tomcat-7.0.68.tar.gz

172618_Waxv_2876959.png

2、  移动解压后的tomcat:mv apache-tomcat-7.0.68 /home/dev/solr-tomcat

172627_wCCm_2876959.png

3、  清空webapps

172633_Xaak_2876959.png

四、运行solr5

1、  解压缩solr,将solr-5.3.0  D:\solr\solr-5.3.0\server\solr-webapp下的webapp

2、  上传webapp改名为solr

172639_4uuP_2876959.png

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

172646_0rSQ_2876959.png

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

172653_68HB_2876959.png

5、      solr-5.3.0\server\solr拷贝到/home/dev/solr盘,重命名solrhome

172703_oLfg_2876959.png

172710_QUgf_2876959.png

6、  编辑\webapps\solr\WEB-INF\下的web.xml放开env-entry标签,并修改env-entry-value的值为/home/dev/solrhome

172719_EKc8_2876959.png

172727_VRPq_2876959.png

 

7、  关闭防火墙:systemctl stop firewalld.service #停止 systemctl disable firewalld.service #禁用

172737_p12V_2876959.png

8、  进入bin目录,运行./startup.sh

172743_30gs_2876959.png

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

172753_5Fg1_2876959.png

10、              浏览器:http://192.168.1.110:8080/solr/#/

172759_Sjmq_2876959.png

五、配置solr5

1、  提升tomcat启动权限:chmod a+x *.sh

172807_iAAF_2876959.png

2、  修改solrhome的权限:chown -R dev:dev solrhome/

172815_xSGT_2876959.png

3、  拷贝basic_configs到/home/dev/solrhome并重命名att_core

172823_Ko0A_2876959.png

4、  Add core

172830_T4HC_2876959.png

172835_y5rZ_2876959.png

六、smart分词配置

1、  将\solr-5.3.0\contrib\analysis-extras\lucene-libs下的lucene-analyzers-smartcn-5.3.0.jar复制到\webapps\solr\WEB-INF\lib目录下

172844_o5kr_2876959.png

2、  选择核心目录用文本编辑器打开\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>

172852_uPyu_2876959.png

八、拼音分词

1、  安装jar包到\webapps\solr\WEB-INF\lib中

172926_Jbyc_2876959.png

2、  在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>

172934_Hbzz_2876959.png

 

九、DataimportHandler,它可以把数据从关系数据库中查询出来,然后倒入到索引库中

1、  将\solr-5.3.0\dist\ solr-dataimporthandler-5.3.0.jar拷贝到\webapps\solr\WEB-INF\lib

172942_Dvzz_2876959.png

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

161356_t2e1_2876959.png

3、  拷贝solr-dataimportscheduler-1.1.jar到\webapps\solr\WEB-INF\lib.

161338_FkJq_2876959.png

4、  加入\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>

161254_BG4N_2876959.png

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

161410_piqQ_2876959.png

6、  配置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>

161427_MBhc_2876959.png

当数据库中的文档被删除时,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>

 

 

7、  配置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"/>

161446_Df7O_2876959.png

8、  导入数据

161456_JMRZ_2876959.png

161508_LZfT_2876959.png

161518_rEZa_2876959.png

161527_YpTa_2876959.png

9、  查询

161536_zlwD_2876959.png

十、数据库配置

1、  新建数据库字段与删除表

新建go_attachment中的solr_update_time字段

161546_ifn6_2876959.png

2、  新建删除数据表go_attachment_delete

161556_qFVv_2876959.png

3、  编写触发器

161603_vMgR_2876959.png

4、  set new.solr_update_time=CURRENT_TIMESTAMP

161612_KU1L_2876959.png

5、  set new.solr_update_time=CURRENT_TIMESTAMP

161620_szFR_2876959.png

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

161627_qXyB_2876959.png

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

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

这表示字段的数值在当前时间前10分钟的时刻之后,另外1 HOUR表示1小时,1 DAY表示1天。

 

十一、       重建索引

161637_cz5x_2876959.png

测试

161647_C3JH_2876959.png

161655_Ku9p_2876959.png

 

转载于:https://my.oschina.net/gulaotou/blog/735264

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值