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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值