Ali_Cloud++:阿里云-单机版 solr4.10.3 安装部署
本次案例演示:环境
1、solr-4.10.3.tgz.tgz
2、apache-tomcat-7.0.88.tar.gz
3、IKAnalyzer2012FF_hf1.zip
资源下载:Download 提取码:syj6
1):下载文件资源上传到指定目录下(自定义路径)
2):解压到指定目录下
tar -zxvf solr-4.10.3.tgz.tgz -C ./install/
3):切换到 解压后的文件 dist 下
cd solr-4.10.3/dist/

3-1):拷贝 solr-4.10.3.war 到 tomcat/webapp/ 下 (请提前解压 所需要的的 tomcat)
cp solr-4.10.3.war /opt/solr/tomcat/apache-tomcat-7.0.88/webapps/solr.war
4):启动 tomcat 进行 solr 自动解压缩
cd /opt/tomcat/apache-tomcat-7.0.88/bin/ ./startup.sh

5):复制 log 日志jar 到 solr 中

cd /opt/solr/solr-4.10.3/example/lib/ext/ cp * /opt/tomcat/apache-tomcat-7.0.88/webapps/solr/WEB-INF/lib/
6):配置 solr home

cd /opt/solr/install/solr-4.10.3/example/
cp -r solr /opt/solr/install/solrhome
7):solr 与 solrhome 建立关系 【修改 solr 中的 web.xml】
cd /opt/solr/tomcat/apache-tomcat-7.0.88/webapps/solr/WEB-INF/

8):启动 tomcat 进行访问 solr 测试【 ip:tomcat端口/solr】

以上 我们的 solr 服务就已经 搭建成功了。
9):配置 IK 中文分词器
9-1):解压分词器包 (unzip 指令需要 yum安装)
unzip IKAnalyzer2012FF_hf1.zip
9-2):重命名
mv IK\ Analyzer\ 2012FF_hf1/ IKAnalyzer2012FF_hf1
9-3):将 IKAnalyzer2012FF_u1.jar 添加到 solr 工程中去

cp IKAnalyzer2012FF_u1.jar /opt/tomcat/apache-tomcat-7.0.88/webapps/solr/WEB-INF/lib/
首先创建 classes 目录:
mkdir /opt/tomcat/apache-tomcat-7.0.88/webapps/solr/WEB-INF/classes
拷贝:
cp IKAnalyzer.cfg.xml ext_stopword.dic mydict.dic /opt/tomcat/apache-tomcat-7.0.88/webapps/solr/WEB-INF/classes/
查看:
ll /opt/tomcat/apache-tomcat-7.0.88/webapps/solr/WEB-INF/classes

10):定义 fieldType 指定 使用中文分词器

cd /opt/solr/solrhome/collection1/
cd conf/

编辑 schema.xml 添加如下配置:
<!-- text_ik -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" useSmart="false"
class="org.wltea.analyzer.lucene.IKAnalyzer" />
<analyzer type="query" useSmart="true"
class="org.wltea.analyzer.lucene.IKAnalyzer" />
</fieldType>
保存后 重启 tomcat 浏览器查看:

11):dataimport 导入数据库数据 连接 mysql
solr 默认是没有开启dataimport这个功能的,所以我们要经过一点配置来开启它。
11-1):找到不要的 jar 文件 及 mysql 驱动jar (所需要的的文件 我会单独提出来 文章头部有下载链接)
cd /opt/solr/install/solr-4.10.3/dist/

把这个三个 JAR 复制到 tomcat/webapp/solr/WEB-INF/lib/ 下。
11-2):找到 solr-4.10.3/example/example-DIH/solr/db/conf/db-data-config.xml,把其复制到 solrHome/core1/conf/下,并改名为data-config.xml.
11-3):找到solrHome/core1/conf/solrconfig.xml,并打开,在里面添加一段内容,如下
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
11-4):打开并编辑data-config.xml,完整的配置文件如下
<dataConfig>
<dataSource dataSource="data_source"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://IP:3306/db-solr?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false"
user="admin"
password="admin" />
<document>
<!-- name属性,就代表着一个文档,可以随便命名 -->
<!--
transformer 格式转化:HTMLStripTransformer 索引中忽略HTML标签
query:查询数据库表符合记录数据 query是一条sql,代表在数据库查找出来的数据
deltaQuery:增量索引查询主键ID 注意这个只能返回ID字段
deletedPkQuery:增量索引删除主键ID查询 注意这个只能返回ID字段 deletedPkQuery="select id from meta_solr where 1=1 and isDeleted=1"
deltaImportQuery:增量索引查询导入的数据 -->
<!--deletedPkQuery="select id from students where del_flag=0"-->
<entity name="students"
pk="id"
query="select id,carded,name,sex,telePhone,fraction,schools,familyAddress,arrangement,college,major,del_flag as delFlag
,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') as createTime,DATE_FORMAT(update_time,'%Y-%m-%d %H:%i:%S') as updateTime from students where del_flag=0"
deltaQuery="select id from students where update_time > '${dataimporter.last_index_time}'"
deletedPkQuery="select id from students where del_flag=1"
deltaImportQuery="select id,carded,name,sex,telePhone,fraction,schools,familyAddress,arrangement,college,major,del_flag as delFlag
,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') as createTime,DATE_FORMAT(update_time,'%Y-%m-%d %H:%i:%S') as updateTime from students where id='${dih.delta.id}'" > <!-- 每一个field映射着数据库中列与文档中的域,column是数据库列,name是solr的域(必须是在 managed-schema 或 schema 文件中配置过的域才行 版本的不同文件名有区别 4版本是 schema) -->
<field column="id" name="id"/>
<field column="carded" name="carded"/>
<field column="name" name="name"/>
<field column="sex" name="sex"/>
<field column="telePhone" name="telePhone"/>
<field column="fraction" name="fraction"/>
<field column="schools" name="schools"/>
<field column="familyAddress" name="familyAddress"/>
<field column="arrangement" name="arrangement"/>
<field column="college" name="college"/>
<field column="major" name="major"/>
<field column="delFlag" name="delFlag"/>
<field column="createTime" name="createTime"/>
<field column="updateTime" name="updateTime"/> </entity>
</document>
</dataConfig>
schema.xml 必须要配置 field:要有对应关系
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<!--测试用例-->
<field name="carded" type="string" indexed="true" stored="true"/>
<field name="name" type="string" indexed="true" stored="true"/>
<field name="sex" type="string" indexed="true" stored="true"/>
<field name="telePhone" type="string" indexed="true" stored="true"/>
<field name="fraction" type="int" indexed="true" stored="true"/>
<field name="schools" type="text_ik" indexed="true" stored="true"/>
<field name="familyAddress" type="text_ik" indexed="true" stored="true"/>
<field name="arrangement" type="string" indexed="true" stored="true"/>
<field name="college" type="string" indexed="true" stored="true"/>
<field name="major" type="string" indexed="true" stored="true"/> <field name="delFlag" type="string" indexed="true" stored="true"/>
<field name="createTime" type="string" indexed="true" stored="true"/>
<field name="updateTime" type="string" indexed="true" stored="true"/>
重启tomcat,然后会看到如下页面

点击蓝色的按钮,则开始导入,导入过程依据数量量的大小,需要的时间也不同,可以点击右边的Refresh status来刷新状态,可以查看当前导入了多少条。
导入成功如下:

12):mysql 数据发生变更 同步 solr 配置:
方案一:使用 solr 配置定时器进行 增量更新
方案二:使用 spring定时器等技术 调用接口进行增量更新
方案三:使用脚本定时 进行增量更新
12-1):打开tomcat下面solr的web.xml配置文件,路径:/usr/local/solr/tomcat/apache-tomcat-7.0.30/webapps/solr/WEB-INF 添加如下内容:
<!-- solr数据导入监听器 -->
<listener>
<listener-class>
org.apache.solr.handler.dataimport.scheduler.ApplicationListener
</listener-class>
</listener>
12-2):导入相关jar 到 solr/tomcat/apache-tomcat-7.0.30/webapps/solr/WEB-INF/lib
提示:
solr 4.10.3 :所需要的jar为 apache-solr-dataimportscheduler-1.0.jar 其他则报错
其他高版本的可能要重新编译源代码 重新生成jar包
这是个 solr 的 bug
导入完jar文件后还需要添加如下配置:
在solrhome目录下,新建配置文件: mkdir conf文件夹,并在conf中新建mkdir dataimport.properties文件,
注意,一定要在solrhome目录下,以solr实例core1要在同级目录,并在dataimport.properties添加以下内容:
#################################################
# #
# dataimport scheduler properties #
# #
################################################# # to sync or not to sync 是否同步功能
# 1 - active; anything else - inactive 1 - 开启; 否则不开启
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=game,resource 需要同步的solr core
syncCores=collection1
# solr server name or IP address solr server 名称或IP地址
# [defaults to localhost if empty] 默认为localhost
server=localhost
# solr server port solr server端口
# [defaults to 80 if empty] 默认为80
# 安装solr的tomcat端口,如果你使用的是默认的端口,就不用改了,否则改成自己的端口就好了
port=8081
# 调度区间
# 默认为30分钟
interval=1
# 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]
# 重做索引的时间间隔,单位分钟,默认7200,即5天;
# 为空,为0,或者注释掉:表示永不重做索引
reBuildIndexInterval=1 # 重做索引的参数
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true # 重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;
# 两种格式:2012-04-11 03:10:00 或者 03:10:00,后一种会自动补全日期部分为服务启动时的日期
reBuildIndexBeginTime=03:10:00
正常情况下:重启tomcat,然后再数据库添加一条数据,就可以在solr后台查询到添加的结果了
但是在 solr.4.10.3 版本当中发现并不生效 也可能是我才疏学浅 。
如有大佬发现此问题的原因:麻烦在留言区留言纠正 感谢。
建议使用高版本 solr。
针对上述定时更新不生效问题;本人采用 spring定时任务调度方案替代。

package cn.com.solr.utils; import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.params.MapSolrParams; import java.util.HashMap;
import java.util.Map; public class SolrBuildRequest { public static SolrRequest<QueryResponse> buildRequest(Command command, String entity) {
Map<String, String> map = new HashMap<>();
switch (command) {
case DELTA_IMPORT:
map.put("command", "delta-import");
map.put("commit", "true");
map.put("wt", "json");
map.put("indent","true");
map.put("entity", entity);
map.put("verbose","false");
map.put("clean", "false");
map.put("optimize", "false");
map.put("index", "false");
map.put("debug", "false");
return new QueryRequest(new MapSolrParams(map));
case FULL_IMPORT:
map.put("command", "full-import");
map.put("clean", "true");
map.put("commit", "true");
map.put("optimize", "false");
map.put("entity", entity);
map.put("index", "false");
map.put("debug", "false");
map.put("wt", "json");
return new QueryRequest(new MapSolrParams(map));
}
return null;
} }
SolrBuildRequest 工具类
package cn.com.solr.utils;
public enum Command {
FULL_IMPORT,DELTA_IMPORT;
}
Command 枚举
Ali_Cloud++:阿里云-单机版 solr4.10.3 安装部署的更多相关文章
- 阿里云server该数据光盘安装操作
猛击这里:阿里云server该数据光盘安装操作
- 阿里云centos中mysql的安装及一些常识知识
------------------------------------------------------------------- 阿里云centos中mysql的安装 工具WinSCP v ...
- 阿里云服务器: centos7 ftp安装
阿里云服务器: centos7 ftp安装 ftp需要您参考下面链接和附件开放安全组20.21.1024-65535 后查看是否正常. 配置步骤如下, 1, 如果没有安装ftp,需要先安装 yum - ...
- 在阿里云的ubuntu服务器上安装xampp时出现unable to realloc unable to realloc 8380000 bytes错误
在阿里云的ubuntu服务器上安装xampp时出现unable to realloc unable to realloc 8380000 bytes错误 解决:增加Swap空间(阿里云缺省没有分配任何 ...
- 阿里云ECS服务器CentOS7.2安装Python2.7.13
阿里云ECS服务器CentOS7.2安装Python2.7.13 yum中最新的也是Python 2.6.6,只能下载Python 2.7.9的源代码自己编译安装. 操作步骤如下: 检查CentOS7 ...
- 阿里云万网虚拟主机安装配置Https(SSL)教程
太多太多的用户咨询阿里云虚拟主机是否可以安装SSL数字证书?万网空间是否可以支持HTTPS协议访问网站?答案只有一个:目前阿里云虚拟主机都不支持安装SSL证书!但是,但是,可以曲线实现目标! 1.为了 ...
- 阿里云服务器Windows Server 2008/2012部署Office Web Server 2013
以前成功将Office Web Server 2013部署在了本地服务器上,此次是将Office Web Server 2013部署在阿里云服务器Windows Server 2008和2012上,中 ...
- 如何在IIS上发布网站 在阿里云服务器windows server2012r iis上部署.net网站
如何在IIS上发布网站 本片博客记录一下怎么用IIS发布一个网站,以我自己电脑上一个已经开发完成的网站为例: 1.打开项目 这是我电脑上的一个项目,现在我记录一下将这个项目发布到iis上的整个过程 ...
- 阿里云服务器centos5.10安装lamp环境
==相关命令== 查看linux版本:cat /etc/redhat-release ==配置修改== 一.Apache配置 ------------------------------------- ...
随机推荐
- 02 HDFS 分布式环境实战
HDFS的主要设计理念 1.存储超大文件 这里的“超大文件”是指几百MB.GB甚至TB级别的文件. 2.最高效的访问模式是 一次写入.多次读取(流式数据访问)3.运行在普通廉价的服务器上 HDFS设计 ...
- Redis系列五 - 哨兵、持久化、主从
问:骚年,都说Redis很快,那你知道这是为什么吗? 答:英俊潇洒的面试官,您好.我们可以先看一下 关系型数据库 和 Redis 本质上的区别. Redis采用的是基于内存的,采用的是单进程单线程模型 ...
- Django 图片上传到数据库 并调用显示
环境:Django2.0 Python3.6.4 建立项目,数据库设置,就不说了. 直接上代码: 在models.py中,需要建立模型,这里使用了ImageField字段,用来存储图片路径,这个字段继 ...
- 2020 还不会泡 Github 你就落伍了
前言 回想起两年前缸接触 GitHub 那会儿,就发现网上完全搜不到一篇关于 github 使用的文章,虽然自己倒腾几下慢慢的也就上手了,但毕竟花费了不少时间. 时间对每个人都是宝贵的,一直很好奇 G ...
- Head First设计模式——中介者模式和备忘录模式
中介者 中介者模式:使用中介者来集中相关对象之间复杂的沟通方式和控制方式. Bob有一个自动屋,当他的闹钟响了只有,闹钟会告诉咖啡壶开始煮咖啡.后来客户不断的提出许多新需求:周末不要提供咖啡.下班后需 ...
- C++ 理解类 和 类中的public、protected、private
我们要明确,不只是C++有类,很多语言也会用到类,因为现在很多都是面向对象编程... 在c++中,关于类的理解,个人理解是这样的,具有共同属性的一个集合被称为类, 比如说人这个集合,具有性别,年龄,出 ...
- Java的反射基础技术
今天本人给大家讲解一下Java的反射基础技术,如有不对的或者讲的不好的可以多多提出,我会进行相应的更改,先提前感谢提出意见的各位了!!! 什么是反射? 反射它是根据字节码文件可以反射出类的信息.字段. ...
- 记 2020蓝桥杯校内预选赛(JAVA组) 赛后总结
目录 引言 结果填空 1. 签到题 2. 概念题 3. 签到题 4. 签到题 程序题 5. 递增三元组[遍历] 6. 小明的hello[循环] 7. 数位递增[数位dp] 8. 小明家的草地[bfs] ...
- 关于CORS(跨域资源共享)的几个http请求头小实验
对几种与跨域相关的请求头做一个总结 关于跨域可以看:9 种常见的前端跨域解决方案(详解) 看完后可以配合我的代码做些实验,看看注释掉某个响应头会发生什么,整体代码会在最后贴出 跨域简单请求 需要在服务 ...
- C# 基础知识系列- 2 字符串
String的常见方法 String 变量的声明方式 C#中字符串常见的声明有两种: 直接使用字面值 即String s = "12321"; 使用构造器,即String s = ...