solr之定时增量索引实现
solr本身就提供了一个工具库实现定时增量索引,但是我在使用的过程中发现会出现一些问题,目前遇到两点:
1.启动时总是报如下异常:
|
1
|
The web application [solr] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. |
尝试修改源码,不通过SolrResourceLoader加载配置文件,修改完成部署后,可以正常启动。
2.正常启动后,定时发起任务时,报如下异常:
|
1
|
415 Unsupported Media Type |
查看BaseTimerTask类,发现在发送http请求的地方,没有在请求头中加入Content-Type。修改之后问题解决。
代码具体修改如下,完整源码会在最后提供下载地址:
ApplicationListener类:
|
1
2
3
4
5
6
7
8
9
10
|
@Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) { ... Timer timer = new Timer(); HttpPostScheduler task = new HttpPostScheduler( servletContext.getServletContextName(), servletContext.getInitParameter("autoDeltaImportConfPath"), timer); ... } |
SolrDataImportProperties类:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
...private String autoDeltaImportConfPath;public SolrDataImportProperties() {}public SolrDataImportProperties(String autoDeltaImportConfPath) { this.autoDeltaImportConfPath = autoDeltaImportConfPath;}...public void loadProperties(boolean force) { try { if (force || properties == null) { properties = new Properties(); File dataImportProperties = new File(autoDeltaImportConfPath, "dataimport.properties"); ...} |
HttpPostScheduler类:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public HttpPostScheduler(String webAppName, String autoDeltaImportConfPath, Timer t) throws Exception{... //load properties from global dataimport.properties p = new SolrDataImportProperties(autoDeltaImportConfPath);... }...private void sendHttpPost(String completeUrl, String coreName){... URL url = new URL(completeUrl); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("type", "submit"); conn.setRequestProperty("Content-Type", "*/*"); //新增 conn.setDoOutput(true);...} |
web.xml文件:
|
1
2
3
4
5
6
7
|
<context-param> <param-name>autoDeltaImportConfPath</param-name> <param-value>/yourconfpath</param-value></context-param><listener> <listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class></listener> |
另外说明一点,现在的dataimport.properties可以随意放,只需在上面指定位置即可。
源码托管在Git osc了,地址是http://git.oschina.net/ywooer/solr-dataimporthandler-scheduler.git
参考文档:
官方文档,http://wiki.apache.org/solr/DataImportHandler#Scheduling
官方工具库:http://code.google.com/p/solr-data-import-scheduler/
另外有一个第三方实现支持重建索引:https://code.google.com/p/solr-dataimport-scheduler/
solr之定时增量索引实现的更多相关文章
- solr与.net系列课程(六)solr定时增量索引与安全
solr与.net系列课程(六)solr定时增量索引与安全 solr增量索引的方式,就是一个Http请求,但是这样的请求显然不能满足要求,我们需要的是一个自动的增量索引,solr官方提供了一个定时器 ...
- solr定时增量索引
当数据库的数据发生改变的时候,我们不想手动的去重新添加数据库的数据导solr索引库中,所以用到定时添加索引.增删改的数据.现在写的这些都是基于我之前做的一步步到这来的. 将solr/dist下的sol ...
- solr-DIH:定时增量索引
参考:官方文档,http://wiki.apache.org/solr/DataImportHandler#Scheduling googlecode 找到:https://code.google.c ...
- 四、Solr数据源配置(JNDI、DIH)及定时重做索引
简介 Solr支持很多种创建索引的方式,包括网页,xml以及数据库,因为我这边做的是企业级的搜索,所以用的是数据库建立索引.其实从数据库建立索引,很大程度上取决于原来的数据库设计. 从数据库建立索引, ...
- 用solr DIH 实现mysql 数据定时,增量同步到solr
基础环境: (二)设置增量导入为定时执行的任务: 很多人利用Windows计划任务,或者Linux的Cron来定期访问增量导入的连接来完成定时增量导入的功能,这其实也是可以的,而且应该没什么问题. 但 ...
- [Solr] (源) Solr与MongoDB集成,实时增量索引
一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中,直接向Solr服务发送请求,返回xml.js ...
- Solr与MongoDB集成,实时增量索引
Solr与MongoDB集成,实时增量索引 一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中, ...
- solr与.net系列课程(八)solr中重跑索引的注意事项
solr与.net系列课程(八)solr中重跑索引的注意事项 我们如果在项目中使用solr,那肯定就是把数据库中的数据跑进solr服务器中,solr有两种操作一种是新建索引,一种是增量索引,这里我们来 ...
- .Net程序员 Solr-5.3之旅 (三)Solr 从MSSQ导入索引数据
阅读目录 引言 准备工作 data-config.xml schema.xml 导入数据 结尾 附件下载 引言 Other men live to eat, while I eat to live.- ...
随机推荐
- OCM_第十一天课程:Section5 —》数据仓库
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
- TestNG测试方法
@Test(enabled = false)有助于禁用此测试用例. 分组测试是TestNG中的一个新的创新功能,使用<groups>标记在testng.xml文件中指定分组. 它可以在&l ...
- C++ code:More Loop Designs
1 逻辑判断 对于逻辑判断问题,一般都要考虑全部的可能性,然后从这些可能性中按条件逐一排查,直到最后获得某个结论. [百钱买百鸡问题] 问题描述: 雄鸡(cock)7元一只,母鸡(hen)5元一只, ...
- hdu 1372 骑士从起点走到终点的步数 (BFS)
给出起点和终点 求骑士从起点走到终点所需要的步数 Sample Inpute2 e4 //起点 终点a1 b2b2 c3a1 h8a1 h7h8 a1b1 c3f6 f6 Sample OutputT ...
- oracle <> 选不出为null的部分
比如 tablea 的 字段b 为空,则 select * from tablea where b <> 'Y' 则查不出b is null 的部分
- python全栈开发day43-javascript
一.昨日内容回顾 1.绝对定位的盒子居中 left:50%: margin-left:负的盒子宽度的一半 2.固定位置 脱离标准文档流 作用:返回顶部,广告,滚动监听栏.固定导航栏(body{marg ...
- POJ1487 Single-Player Games 高斯消元
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ1487 题解概括 给出多个树形结构,由小写字母和数字表示,每个小写字母表示一棵小树.现在,以a为根节点 ...
- class path resource [spring/applicationContext.xml] cannot be opened because it does not exist
1.查看路径有没有写错 2.编辑器认为你的文件不是 source folders(原文件),需要你手动将文件改过来
- 二分搜索-HihoCoder1139
题目描述: 由于自己“想得太多”,导致自己读了半天题才理解了题意.我还以为索敌值会随着每一次到达战略点而减小,结果题意是索敌值是固定了的,并不会改变. 如下是我对题目中第一个案例的分析: 每个圆圈代表 ...
- python实现FTP弱口令扫描器与简单端口扫描器
python实现FTP弱口令扫描器与简单端口扫描器 目录 FTP弱口令扫描器 简单端口扫描器 参考: https://blog.csdn.net/rebelqsp/article/details/22 ...