1,为了支持增量建索引,我们需要把上述文中的mysql-data-config.xml内容改为

query="SELECT id, title, content FROM article"

deltaImportQuery="SELECT id, title, content FROM article

WHERE id='${dataimporter.delta.id}'"

deltaQuery="SELECT id FROM article

WHERE update_time > '${dataimporter.last_index_time}'">

2,我们在上述文中最后Execute时,使用firebug或其他调试插件拿到真实请求的地址(去掉了一些无用参数):

增量建索引链接

http://localhost:8983/solr/collection1/dataimport?command=delta-import&clean=false&commit=true&entity=article&optimize=false

全量建索引链接

http://localhost:8983/solr/collection1/dataimport?command=full-import&clean=true&commit=true&optimize=true

3,有了地址不难总结出solrj调用方法:

import org.apache.log4j.Logger;

import org.apache.solr.client.solrj.SolrQuery;

import org.apache.solr.client.solrj.SolrServerException;

import org.apache.solr.client.solrj.impl.HttpSolrServer;

import base.util.ConfigUtil;

public class SolrService {

private static Logger log = Logger.getLogger(SolrService.class);

private static HttpSolrServer solrServer;

static {

solrServer = new HttpSolrServer(ConfigUtil.getValue("solr.url"));

solrServer.setConnectionTimeout(5000);

}

/**

* 增量/全量建立索引 。

*

* @param delta ture,增量建立索引;false,重建所有索引

*/

public static void buildIndex(boolean delta) {

SolrQuery query = new SolrQuery();

// 指定RequestHandler,默认使用/select

query.setRequestHandler("/dataimport");

String command = delta ? "delta-import" : "full-import";

String clean = delta ? "false" : "true";

String optimize = delta ? "false" : "true";

query.setParam("command", command)

.setParam("clean", clean)

.setParam("commit", "true")

.setParam("entity", "article")

.setParam("optimize", optimize);

try {

solrServer.query(query);

} catch (SolrServerException e) {

log.error("建立索引时遇到错误,delta:" + delta, e);

}

}

}

4,然后在你需要的位置,如文章发布、修改后删除等候调用即可。

其实这个方法不用SolrJ的对像,用httpclient甚至java.net.URL都可以,只要能访问url就行。

相关说明:

主要原理:是利用率每次我们进行import的时候在solr.home的conf下面生成的dataimport.properties文件,此文件里面有最近一次导入的相关信息,如:

我的文件位置为

/root/solr-4.5.1/example/solr/collection1/conf

我的文件内容为

#Mon Dec 09 14:06:03 CST 2013

last_index_time=2013-12-09 14\:06\:00

article.last_index_time=2013-12-09 14\:06\:00

last_index_time是最近一次增量或全量索引的时间,通过比较这个时间和我们数据库表中的update_time列即可得出哪些是之后修改或者添加的。

data-config.xml说明:

query是获取全部数据的SQL

deltaImportQuery是获取增量数据时使用的SQL

deltaQuery是获取主键的SQL

参数说明:

clean:设置建索引前是否删除之前的索引;

commit:设置建索引后是否自动提交;

entity:mysql-data-config.xml entity name中配置的名称,如果配有多个,且这里不指定,所有entity都会被执行;

optimize:设置建索引后是否自动优化。

solr java 全量,Solr实时创建增量或全量索引相关推荐

  1. solr java 全量,Java程序员必看:Solr vip竞价排名

    功能介绍 本文将使用solr完成vip等级排名,这里并不是简单的按照vip等级排序.而是在使用solr条件查询(不使用排 序)的时候将符合条件并且具有vip等级的数据显示在前面,这个时候咱们就要使用s ...

  2. Solr与MongoDB集成,实时增量索引[转]

    http://www.123905.com/ 一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中 ...

  3. Solr 4.x定时、实时增量索引 - 修改、删除和新增索引

    2019独角兽企业重金招聘Python工程师标准>>> 一.开始增量索引前的准备工作. 1.认识data-config.xml中相关属性 <!-- transformer 格式 ...

  4. solr java浏览器访问_solr解决访问安全

    Tomcat7,solr3.6,mmseg1.8 1:环境的搭建 1:解压tomcat,solr,mmseg4j 2:复制dist文件夹下apache-solr.war到tomcat的webapp文件 ...

  5. solr java api_Solr7.4.0的API(Solrj)操作

    一.SolrJ的概念 是一个API,它使用Java(或任何基于JVM的语言)编写的应用程序可以轻松地与Solr交谈.SolrJ隐藏了许多连接到Solr的细节,并允许您的应用程序通过简单的高级方法与So ...

  6. hive增量表和全量表_你真的了解全量表,增量表及拉链表吗?

    1 Mysql数据准备 第一天 9月10号数据 1,待支付,2020-09-10 12:20:11,2020-09-10 12:20:112,待支付,2020-09-10 14:20:11,2020- ...

  7. solr java 客户端_Solr JAVA客户端SolrJ的使用

    一.Solrj简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.SolrJ针对 Solr提供了Rest 的HTTP接口进行了封装, SolrJ底 ...

  8. kylin cube 增量和全量

    2019独角兽企业重金招聘Python工程师标准>>> 全量构建与增量构建 全量构建 对数据模型中没有指定分割时间列信息的Cube,Kylin会采用全量构建,即每次从Hive中读取全 ...

  9. Apache Solr Java 企业级搜索引擎

    Apache Solr,Solr 是基于 Lucene 的全文搜索服务器,也是最流行的企业级搜索引擎,其主要功能包括全文检索.命中高亮.分面搜索.动态聚类.数据库集成,以及对富文本(如 Word.PD ...

最新文章

  1. ●BZOJ 2669 [cqoi2012]局部极小值
  2. Jquery 添听checkbox 是否选中
  3. 从0搭建一个Springboot+vue前后端分离项目(四)利用Element框架搭建页面主体部分表格与侧边栏
  4. Unet项目解析(3): run_testing.py
  5. linux 4.4内核是什么,Linux 内核 4.4 LTS 将于2016年1月10日发布
  6. fatal: unable to access 'xxxxxxxxxxxxx':The requested URL returned error: 403
  7. BitNami一键安装Redmine
  8. mvc 视图和模型的对应_通过在酒吧订购饮料来解释模型视图控制器(MVC)
  9. UVA-714 二分
  10. Spring Boot自动化配置的利弊及解决之道
  11. Java 18 正式发布,默认 UTF-8,finalize 被弃用,别再乱用了!
  12. python-函数的注释
  13. 图解 Go 切片的深拷贝和浅拷贝
  14. iPhone 九、十月份在中国销量曝光:真的卖疯了!
  15. android编译的tool版本有多少,android gradle tool版本从3.3升级到3.6.3问题记录
  16. python neo4j_在Python中使用Neo4j的方法
  17. 数据统计并制作韦恩图
  18. PN learning
  19. Vagrant 入门 - 同步目录(synced folders)
  20. 基于不同策略的英文单词的词频统计和检索系统(C++)

热门文章

  1. 为什么我们需要给 Angular library 创建多重入口 multiple entry point
  2. 关于 HTTP 和 TCP 的 keep-alive
  3. Angular应用里具有back功能的按钮实现
  4. 使用WebIDE开发Android应用
  5. how is batch operation handled in backend
  6. hybris使用impEx导入产品主数据的示例脚本
  7. when is SAP UI5 url hash changed in browser
  8. windows10大瘦身 - Chrome文件夹下可以删除的临时js文件
  9. coach和mentor,教练和导师的区别
  10. 如何使用Marketing Cloud的扩展字段作为搜索条件进行搜索