搜索引擎之阿堂Solr学习笔记系列6(进阶篇:更新索引查询策略)
2016-12-22 16:56
513 查看
在上篇文章中,阿堂主要和大家分享了关于solr的一个非常重要的文件schema.xml中一些字段和属性的介绍,相当于是对阿堂实战demo的一些基础知识的补充。
本篇文章阿堂是介绍的另一个内容。它的具体场景是这样的:比如说,当我们用作索引、分词、查询的数据库表的字段内容有更新,或者新增记录时,solr对应的索引文件是不会自动更新的,因为solr根本不知道我们已经将用用索引的数据库内容进行了更新操作,所以需要我们来告诉solr我们的更新变动。这里我们需要使用如下url访问来自动激活solr的索引文件的更新。
主要是使用的 http://IP:port/solr/dataimport?command=delta-import 这个url访问,当然在实际项目中需要我们采用一定的策略来处理。比如说使用定时器程序每隔几分钟来进行访问,具体隔多少分钟比较合适要看实际业务的情况,比如说电商平台的查询,我们可能会设置的更新频率要比较短一点,其它一些查询不频繁的平台,我们可以设置更新的频率时间要长一点。当然,如果设置的更新频率短的话,这对sorl服务器的性能也会提出不小的挑战,需要我们考虑对solr作分布式集群,一般是用solrCloud+zookeeper来架构,这个阿堂会在最后的高级篇文章再来分享,这里暂时只提一下。
阿堂使用的测试代码如下
public class SolrjUpdate {
publicstatic void main(String[] args) {
Stringperson ="http://localhost:9999/solr/dataimport?command=delta-import&clean=true&commit=true";
//构造HttpClient的实例
HttpClienthttpClient = new HttpClient();
//创建GET方法的实例
GetMethodgetMethod = new GetMethod(person);
//使用系统提供的默认的恢复策略
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,newDefaultHttpMethodRetryHandler());
try {
//执行getMethod
intstatusCode = httpClient.executeMethod(getMethod);
System.out.println("HttpStatus.SC_OK = "+HttpStatus.SC_OK);
if(statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: "+getMethod.getStatusLine());
}
//读取内容
byte[]responseBody = getMethod.getResponseBody();
//处理内容
System.out.println("返回内容 = "+new String(responseBody));
} catch(HttpException e) {
//发生致命的异常,可能是协议不对或者返回的内容有问题
System.out.println("Please check your provided httpaddress!");
e.printStackTrace();
本篇文章阿堂是介绍的另一个内容。它的具体场景是这样的:比如说,当我们用作索引、分词、查询的数据库表的字段内容有更新,或者新增记录时,solr对应的索引文件是不会自动更新的,因为solr根本不知道我们已经将用用索引的数据库内容进行了更新操作,所以需要我们来告诉solr我们的更新变动。这里我们需要使用如下url访问来自动激活solr的索引文件的更新。
主要是使用的 http://IP:port/solr/dataimport?command=delta-import 这个url访问,当然在实际项目中需要我们采用一定的策略来处理。比如说使用定时器程序每隔几分钟来进行访问,具体隔多少分钟比较合适要看实际业务的情况,比如说电商平台的查询,我们可能会设置的更新频率要比较短一点,其它一些查询不频繁的平台,我们可以设置更新的频率时间要长一点。当然,如果设置的更新频率短的话,这对sorl服务器的性能也会提出不小的挑战,需要我们考虑对solr作分布式集群,一般是用solrCloud+zookeeper来架构,这个阿堂会在最后的高级篇文章再来分享,这里暂时只提一下。
阿堂使用的测试代码如下
public class SolrjUpdate {
publicstatic void main(String[] args) {
Stringperson ="http://localhost:9999/solr/dataimport?command=delta-import&clean=true&commit=true";
//构造HttpClient的实例
HttpClienthttpClient = new HttpClient();
//创建GET方法的实例
GetMethodgetMethod = new GetMethod(person);
//使用系统提供的默认的恢复策略
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,newDefaultHttpMethodRetryHandler());
try {
//执行getMethod
intstatusCode = httpClient.executeMethod(getMethod);
System.out.println("HttpStatus.SC_OK = "+HttpStatus.SC_OK);
if(statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: "+getMethod.getStatusLine());
}
//读取内容
byte[]responseBody = getMethod.getResponseBody();
//处理内容
System.out.println("返回内容 = "+new String(responseBody));
} catch(HttpException e) {
//发生致命的异常,可能是协议不对或者返回的内容有问题
System.out.println("Please check your provided httpaddress!");
e.printStackTrace();
相关文章推荐
- 搜索引擎之阿堂Solr学习笔记系列4(进阶篇:数据库solr搜索实战)
- 搜索引擎之阿堂Solr学习笔记系列3(进阶篇:数据库solr搜索基础)
- 为什么商业搜索引擎选择的索引更新策略是完全重建策略
- Silverlight实现查询建模 系列索引
- ADO.NET Entity Framework 试水系列索引(2008/9/9更新,本系列结束)
- 数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引(转载)
- 数学之美系列之五:简单之美--布尔代数和搜索引擎的索引
- 数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引
- 数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引
- MySQL查询优化技术系列讲座之使用索引
- MySQL查询优化技术系列讲座之使用索引
- MySQL查询优化技术系列讲座之使用索引
- 数学之美 系列五 -- 简单之美:布尔代数和搜索引擎的索引
- 数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引
- MySQL查询优化技术系列——索引
- MySQL查询优化技术系列讲座之使用索引【转】
- 数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引
- NBearV2视频教学系列总索引,欢迎多提意见和建议[09/21更新至IoC篇]
- 数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引
- 转载:ADO.NET Entity Framework 试水系列索引(2008/9/9更新,本系列结束)