什么是solr

solr是基于Lucene的全文搜索服务器,对Lucene进行了扩展优化。

准备工作

首先,去下载以下软件包:

JDK8:jdk-8u60-linux-x64.tar.gz

TOMCAT8:apache-tomcat-8.5.4.zip

SOLR5.5.3:solr-5.5.3.zip

并上传到到linux服务器某个路径下,如下图,我放置在/usr/local/solr目录下:

安装solr:解压solr-5.5.3.zip即可;

安装tomcat、jdk:略,网上资料很多,基本上解压,设置个环境变量就可以;

然后,安装mysql:略,我安装的是Mysql 5.5;

创建数据库及表结构:我创建了一个数据库solrdemo,以及user表,如下图,

updatetime:最后更新时间;

valid:是否有效,0表示已删除的数据,不需要建立索引。

创建一个solr core

至于什么叫做core,我觉得就是一个管理数据的东西,里面有一些配置文件,索引的东西。具体创建步骤如下:

进入solr的bin目录,输入以下命令,启动solr:

./solr start

可看到如下日志:

[root@localhost bin]# ./solr start
Waiting up to 30 seconds to see Solr running on port 8983 [-]
Started Solr server on port 8983 (pid=9951). Happy searching!

然后输入./solr create -c demo命令,创建一个core叫demo;

./solr create -c demo

可看到如下日志:

Copying configuration to new core instance directory:
/usr/local/solr/solr-5.5.3/server/solr/demo

Creating new core 'demo' using command:
http://localhost:8983/solr/admin/cores?action=CREATE&name=demo&instanceDir=demo

{"responseHeader":{"status":0,"QTime":7258},"core":"demo"}

创建完毕;

关闭solr服务:

输入命令./solr stop -all

./solr stop -all

可看到如下日志:

Sending stop command to Solr running on port 8983 ... waiting 5 seconds to allow Jetty process 9951 to stop gracefully.

在/usr/local/solr/solr-5.5.3/server/solr目录下可以看到我们创建的demo core

部署到tomcat

在tomcat的webapp目录下新建一个文件夹,叫solr;

拷贝/usr/local/solr/solr-5.5.3/server/solr-webapp/webapp目录下的内容到/usr/local/solr/apache-tomcat-8.5.4/webapps/solr目录下;

然后在/usr/local/solr/apache-tomcat-8.5.4/webapps/solr目录下新建一个solrhome文件夹,拷贝/usr/local/solr/solr-5.5.3/server/solr(里面有一个我们刚刚创建好的core,“demo”)目录下的内容到/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/solrhome目录下。

拷贝/usr/local/solr/solr-5.5.3/server/lib/ext目录下的jar包到/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/WEB-INF/lib下;

拷贝/usr/local/solr/solr-5.5.3/dist目录下的solr-dataimporthandler-5.5.3.jar和solr-dataimporthandler-extras-5.5.3.jar到/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/WEB-INF/lib下;

拷贝/usr/local/solr/solr-5.5.3/server/resources目录下的log4j.properties文件到/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/WEB-INF/classes目录,没有classes文件夹的自己创建一个。

修改/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/WEB-INF/web.xml文件内容,添加solr/home的配置信息:

    <env-entry><env-entry-name>solr/home</env-entry-name><env-entry-value>/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/solrhome</env-entry-value><env-entry-type>java.lang.String</env-entry-type></env-entry>

修改/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/solrhome/demo/conf/solrconfig.xml文件,将75-85行修改为如下内容,因为我们是拷贝过来的,路径变了,我这里直接用绝对路径。

  <lib dir="/usr/local/solr/solr-5.5.3/contrib/extraction/lib" regex=".*\.jar" /><lib dir="/usr/local/solr/solr-5.5.3/dist/" regex="solr-cell-\d.*\.jar" /><lib dir="/usr/local/solr/solr-5.5.3/contrib/clustering/lib/" regex=".*\.jar" /><lib dir="/usr/local/solr/solr-5.5.3/dist/" regex="solr-clustering-\d.*\.jar" /><lib dir="/usr/local/solr/solr-5.5.3/contrib/langid/lib/" regex=".*\.jar" /><lib dir="/usr/local/solr/solr-5.5.3/dist/" regex="solr-langid-\d.*\.jar" /><lib dir="/usr/local/solr/solr-5.5.3/contrib/velocity/lib" regex=".*\.jar" /><lib dir="/usr/local/solr/solr-5.5.3/dist/" regex="solr-velocity-\d.*\.jar" />

最后,启动tomcat,记得开放8080端口,可以修改/etc/sysconfig/iptables,添加-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT,然后输入service iptables restart重启iptables服务。

接着,浏览器输入http://192.168.229.100:8080/solr/index.html,可以看到我们创建的core demo,如下图:

导入mysql数据库数据,并创建索引

1、下载mysql连接驱动,如mysql-connector-java-5.1.22-bin.jar,拷贝到/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/WEB-INF/lib目录;

2、在/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/solrhome/demo/conf目录下新建一个文件data_config.xml,内容如下:

<dataConfig>
<dataSource name="solrdemo" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.229.1:3306/solrdemo" user="root" password="root"/><document><entity dataSource="solrdemo"  name="user" query="select id, name, address from user where valid=1 " deltaImportQuery="select  id,name,address  from user where ID='${dataimporter.delta.id}'"  deltaQuery="select id  from user where updatetime > '${dataimporter.last_index_time}'"  deletedPkQuery="select id  from user where valid=0"><field  column="id"  name="id"/><field  column="name"  name="name"/><field  column="address"  name="address"/></entity></document>
</dataConfig>

修改/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/solrhome/demo/conf目录下的managed-schema文件,添加如下两行,id已经有了,不用添加:

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

修改/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/solrhome/demo/conf目录下的managed-schema文件,添加如下内容:

    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  <lst name="defaults">  <str name="config">data-config.xml</str>  </lst>  </requestHandler>  

然后,重新启动tomcat,并访问http://192.168.229.100:8080/solr/index.html,选择demo core,打开dataimport标签页,点击execute,更新索引,如下图:

打开query标签页,可以看到我们数据库中的数据,这里我们的参数q为*.*,匹配所有,如下:

定时更新索引

下载apache-solr-dataimportscheduler.jar库,并将其拷贝到/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/WEB-INF/lib目录。

修改/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/WEB-INF/web.xml文件,添加监听器:

    <listener><listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class></listener>

在/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/solrhome/目录新建一个conf文件夹,并在该文件夹下新建dataimport.properties文件,文件内容如下:

#################################################
#                                               #
#       dataimport scheduler properties         #
#                                               #
##################################################  to sync or not to sync
#  1 - active; anything else - inactive
syncEnabled=1#  which cores to schedule
#  in a multi-core environment you can decide which cores you want syncronized
#  leave empty or comment it out if using single-core deployment
syncCores=demo#  solr server name or IP address
#  [defaults to localhost if empty]
server=192.168.229.100#  solr server port
#  [defaults to 80 if empty]
port=8080#  application name/context
#  [defaults to current ServletContextListener's context (app) name]
webapp=solr#  URL params [mandatory]
#  remainder of URL
params=/dataimport?command=delta-import&clean=false&commit=true#  schedule interval
#  number of minutes between two runs
#  [defaults to 30 if empty]
interval=1#  重做索引的时间间隔,单位分钟,默认7200,即5天;
#  为空,为0,或者注释掉:表示永不重做索引
reBuildIndexInterval=1440#  重做索引的参数
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true#  重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;
#  两种格式:2012-04-11 03:10:00 或者  03:10:00,后一种会自动补全日期部分为服务启动时的日期
reBuildIndexBeginTime=03:00:00

这里,我们配置每隔1分钟增量更新索引,每隔一天全量更新索引(每天03:00:00)。

重启tomcat,观察日志,发现每分钟会自动增量更新索引;

也可以自己做个小测试,往数据库插入数据,然后搜索,发现找不到,但是等过了1分钟再次搜索,发现可以找到。

PS:如果启动tomcat报空指针异常,或定时增量更新失败,可以参考如下文章,我自己打的一个jar包,在5.5.3版本下,经测试,定时增量和全量更新索引功能正常。

本文转自风一样的码农博客园博客,原文链接:http://www.cnblogs.com/chenpi/p/6047909.html,如需转载请自行联系原作者

在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引相关推荐

  1. Linux环境下Risk of rain 2(雨中冒险2)服务器搭建

    最近雨中冒险2出了新虚空DLC,有个朋友的轻薄本刚好能跑,于是乎就入手了一个开玩,但是他发现以他校园网那种渣渣网络根本不可能和好友愉快的联机,第一天还笑嘻嘻的拉人开房爽玩,第二天就房间都进不去了hhh ...

  2. Linux环境下安装及部署Nginx教程

    一.安装教程 1.官网下载地址:nginx: download 2.下载教程: 1)选择Stable version版本下载到本地(该版本为Linux版本),下载完成后直接在本地解压后放入linux系 ...

  3. Linux环境下的Popush部署——张凯

    完成情况: 已按照相关部署文档完成了所有任务,包括软件包的安装与配置,以及对各种开发语言的支持,以及gdb的调试功能的支持 遇到的主要问题: 由于从大二以来我基本上所有的开发工作都是在Linux下做的 ...

  4. 在Linux环境下使用Apache部署ASP.NET Core

    在前几篇文章中我们一起探讨了如何在Linux环境中安装ASP.NET Core运行时环境及将ASP.NET Core项目部署在Jexus中,这篇文章中我们将探讨如何将ASP.NET Core部署于Ap ...

  5. Linux环境下BI分布式部署原理和实现

    1. 内容概述 分布式部署是将数据分散的存储于多台独立的机器设备上,采用可扩展的系统结构,利用多台存储服务器分担存储负荷. 不但解决了传统集中式存储系统中单存储服务器的瓶颈问题,还提高了系统的可靠性. ...

  6. win、linux环境下JAVA+GDAL部署,jar包启动,相关描述,问题解决

    文章目录 windows环境下JAVA+GDAL 1.GDAL下载 2.GDAL安装(既解压后拷贝) 3.GDAL测试 4.Jar包方式运行 https://www.jianshu.com/p/6bc ...

  7. solr 7 mysql导入_solr 7.7.0 windows 导入mysql数据库数据

    接上一篇 准备导入数据 首先修改hello/cong目录下的solrconfig.xml文件,添加如下节点: data-config.xml 新建一个data-config.xml文件,与solrco ...

  8. Linux 环境下如何安装部署 RocketMQ 教程

    这里是 RocketMQ 系列的第一篇文章,工欲善其事,必先利其器,先不讲理论,也不具体介绍 RocketMQ,我们先把 RocketMQ先安装上,让你们实地感受下 RocketMQ 整个安装流程,安 ...

  9. linux环境下python的部署

    linux系统环境自带python2.6,但有时我们项目使用的版本可能是3.x以上等等,此时我们需要在linux中再安装项目所需的python版本,此时就涉及多版本共存问题了,很多同学在安装多个版本P ...

  10. 记录一下CA自签证书如何生成(linux环境下一般为部署到nginx)

    首先前端是部署在nginx上的嘛,那你部署https肯定就要证书,这里记录一下如何自签证书 (ps:这是我自己记录的,不是网上随便cv搬的,我自己用是可用的,成功不了看看是不是自己代码输错了) 一.生 ...

最新文章

  1. Libevent实现TCP服务循环监听
  2. mysql导出入数据库报错_mysql数据库导出导入数据库的搜索结果-阿里云开发者社区...
  3. mysql opensuse_opensuse免安装mysql
  4. 《伊拉图斯死之主》:硬核游戏也有相对放松的游戏体验
  5. java基础---instanceof关键字
  6. 【算法】剑指 Offer 56 - II. 数组中数字出现的次数 II 【重刷】
  7. python 手势检测和追踪_用kinect和python进行手势识别:嗯学习
  8. 移动开发--移动web特别样式处理
  9. 《涂抹Oracle—三思笔记之一步一步学Oracle》看书笔记(第一章)
  10. mysql导入文本或excel文件
  11. 4399小游戏 十滴水 求解器(输出路径的bfs)
  12. 文件加密共享防止转发-冷杉云盘
  13. 洛克菲勒家族是如何发家的,我们都看看
  14. ROS基础学习之ros-tutorials(一)
  15. R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
  16. 虚拟机安装华为模拟器eNSP过程中所遇问题与解决办法
  17. X-Powered-by
  18. 华为方舟编译器PK微软苹果谷歌编译器,到底谁胜出?
  19. Kafka 的简单介绍
  20. StringBuffer和StringBuilder

热门文章

  1. 从G1设计到堆空间调整
  2. 如何做好IT人的职业规划
  3. 成功演示六要素之二——意外
  4. 19【推荐系统4】DeeoCrossing
  5. linux下c 上传图片到mysql_Linux下C连接MySql数据库
  6. 使用webpack 打包出错[webpack-cli] TypeError: Cannot read property ‘tap‘ of undefined
  7. ubuntu中如何查看系统信息(uname)
  8. SQL Sever — 表的操作
  9. ionic2——环境配置篇
  10. C#6.0新特性的尝试