linuxsir首页 LinuxSir.Org | Linux、BSD、Solaris、Unix | 开源传万世,因有我参与欢迎您!
网站首页 | 设为首页 | 加入收藏
您所在的位置:主页 > Limux发行版SuSE >

Sorl 6.6.0 实现定时更新索引

时间:2018-01-01  来源:未知  作者:admin666

Solr 定时更新索引

– solr 6.6.0
– dataimport.scheduler

这里先重点说下,定时更新引用的org.apache.solr.handler.dataimport.scheduler.ApplicationListener不是sorl源码自带的,需要另外去下载,下载地址为:dataimport.scheduler,因为源码年久没人维护,所以并不兼容现有版本,需要做稍微的修改。

一、打开WEB-INF下的web.xml文件,在 <servlet>前添加下面的配置,配置定时更新计划

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

二、 打开solr对应的core下conf目录的data-config.xml文件,配置增量更新索引。
具体官网地址:delta-import。
这里说下其中比较重要的参数:
deletedPkQuery:是指增量更新的时候,要删除的document,查询只需要返回一个document的id即可,例如:Select id From Table Where Deleted=1
deltaQuery:同上,返回了修改或添加的document。solr会自己判断是否需要添加或修改document,依据是managed-schema文件里面配置的uniquekey,如果有相同的,那就替换旧的,不存在则添加。这里的返回结果会排除掉上面deletedPkQuery的id。另外,如果uniquekey 的field定义类型为整形的要注意下,千万不要用pint(6.6.0下定义的)这个类型,增量更新的时候会出现莫名其妙的问题,我搞了好久才发现这个uniquekey定义的是pint,改成int后就正常了。例子:`Select id From Table Where Updated=1 And UpdateAt>'${dih.last_index_time}'
deltaImportQuery:这个配置是增量更新的重点所在,它直接返回增量更新的数据(根据deletedPkQuery和deltaQuery返回的id),例子:Select * From DocumentTable Where ${dih.delta.id},
这里说下${dih.last_index_time},这个变量是core下的conf目录的dataimport.properties,上面记录了索引最近更新的时候,在执行查询的时候,solr会自动替换成配置文件里面记录的时间,${dih.delta.id}是deltaQuery里面返回的字段,这里是id,也可以是其他名字,如

 deltaQuery="SELECT StudentID   FROM Student Where Updated=1 And [UpdateTime] > '${dih.last_index_time}'"
 deltaImportQuery="SELECT * FROM Student  Where StudentID=${dih.delta.StudentID}"

更多Solr相关教程见以下内容

CentOS7下搭建Solr 6.6全文检索服务器及IK分词器配置  http://www.linuxidc.com/Linux/2017-12/149897.htm

Apache Solr: 安装和运行 http://www.linuxidc.com/Linux/2016-12/138527.htm

Solr实现Low Level查询解析(QParser) http://www.linuxidc.com/Linux/2012-05/59755.htm

Solr6.0.0 + Tomcat8 配置问题 http://www.linuxidc.com/Linux/2016-05/131845.htm

CentOS 6.7下单机部署Solr 7.1.0  http://www.linuxidc.com/Linux/2017-12/149889.htm

Solr 的详细介绍:请点这里
Solr 的下载地址:请点这里

上一篇:没有了
友情链接