solrfacet源码分析基于solr4.4 SearchHandler实现SolrRequestHandler,SolrCoreAware(inform接口),在SolrCore初始化的过程中,会依次调用SolrRequestHandler中的inform(SolrCore core),在inform的调用中,初始化SearchHandler中的components对象,comp
原创
2023-06-07 11:59:48
117阅读
用solr做项目已经有一年有余,但都是使用层面,只是利用solr现有机制,修改参数,然后监控调优,从没有对solr进行源码级别的研究。但是,最近手头的一个项目,让我感觉必须把solrn内部原理和扩展机制弄熟,才能把这个项目做好。今天分享的就是:Solr是如何启动并且初始化的。大家知道,部署solr时,分两部分:一、solr的配置文件。二、solr相关的程序、插件、依赖lucene相关的jar包、
转载
2018-07-24 10:17:00
190阅读
2评论
数据读取类 JdbcDataSource.javaResultSetIterator是JdbcDataSource的内部类,用于从数据库读取数据privateclassResultSetIterator{ResultSetresultSet;Statementstmt=null;List<String>colNames;Iterator<Map<String,Object>>rSetIterator;publicResultSetIterator(Stringquery){try{Connectionc=getConnection();stmt=c.crea
转载
2012-09-10 00:19:00
60阅读
2评论
上文说由DataImporter类进一步处理,DataImporter类的简要代码如下/************************************************************************Module:DataImporter.java*Author:Administrator*Purpose:DefinestheClassDataImporter***********************************************************************/importjava.util.*;/**@pdOid6bcd
转载
2012-09-09 17:59:00
44阅读
2评论
上部分的代码还可以进一步优化,主要是构建Collection<SolrInputDocument> 集合,分批次提交,优化新增索引速度其实分页方式也是分批次提交的,不过这种方式 更优雅参考如下代码
import java.io.IOException;import java.net.MalformedURLException;import java.sql.ResultSet;imp
转载
2012-09-10 03:19:00
66阅读
2评论
本文接下来分析EntityProcessor相关类,我们可以称之为实体处理器,针对不同的数据源有不同的实体处理器,屏蔽了不同数据源的差异本文只介绍针对数据库数据源的实体处理器,
转载
2013-05-04 14:05:00
53阅读
2评论
DocBuilder类的简要代码如下,通过传入context参数到EntityProcessorWrapper类的构造函数,然后执行EntityProcessorWrapper的init()方法初始化数据源;然后调用EntityProcessorWrapper的相关方法获取数据(全部导入或增量导入数据)publicclassDocBuilder{privatevoiddoFullDump(){buildDocument(getVariableResolver(),null,null,root,true,null);}privatevoiddoDelta(){Set<Map<Stri
转载
2012-09-09 23:17:00
43阅读
2评论
我们注意到EntityProcessorWrapper的初始化方法@Overridepublicvoidinit(Contextcontext){delegate.init(context); }这里context是上下文对象,通过context获取数据源,context是抽象类publicabstractclassContext{publicabstractDataSourcegetDataSource();publicabstractDataSourcegetDataSource(Stringname);publicabstractEntityProcessorgetEntityProce
转载
2012-09-09 19:48:00
30阅读
2评论
solr处理请求的接口为SolrRequestHandler.java,由handleRequest方法处理来自http的请求/************************************************************************Module:SolrRequestHandler.java*Author:Administrator*Purpose:DefinestheInterfaceSolrRequestHandler*******************************************************************
转载
2012-09-09 17:36:00
74阅读
2评论
在solr的数据导入源码里面,DocBuilder类用于创建solr的Document,具体过程不在本文分析,最后调用SolrWriter类的对象执行SolrInputDocument doc对象的提交、修改、删除等操作本人先来分析一下SolrWriter对象的创建,在DataImportHandler类(数据导入请求处理)的void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp)方法里面UpdateRequestProcessorChain processorChain = req.g...
转载
2013-05-04 21:43:00
73阅读
2评论
去年本人写过一系列 solr dataimport 数据导入源码分析,由于博客园系统存在一些问题,后来上传的相同名称的图片覆盖了原来的图片,导致原来文章里面的图片与其内容不符合,我这里重新整理一下,也同时更新一些心得solr dataimport 数据导入的全局UML类图如下(分两张,我的显示器不够大,显示器显示不完)从上面的UML类图看以看出,这里面是采取了装饰模式以及迭代子模式等我们首先来分析
转载
2013-05-04 13:12:00
107阅读
点赞
3评论
上文solr dataimport源码主要实现的是数据读取功能下面我们接着看数据连接的实现的源码:privateConnectiongetConnection()throwsException{longcurrTime=System.currentTimeMillis();if(currTime-connLastUsed>CONN_TIME_OUT){synchronized(this){ConnectiontmpConn=factory.call();closeConnection();connLastUsed=System.currentTimeMillis();returnconn
转载
2012-09-10 00:21:00
34阅读
2评论
在solr dataimport 数据导入源码分析(五)提到了contextimpl类调用DataImporter对象获取数据源contextimpl.javaprivateDataSourceds;privateDataImporterdataImporter;@OverridepublicDataSourcegetDataSource(){if(ds!=null)returnds;if(entity==null)returnnull;if(entity.dataSrc==null){entity.dataSrc=dataImporter.getDataSourceInstance(enti
转载
2012-09-10 00:18:00
91阅读
2评论
我们查看DocBuilder类的源码发现,并不是直接持有对SqlEntityProcessor类的引用,而是另外一个包装类EntityProcessorWrapper,EntityProcessorWrapper直接继承自抽象类EntityProcessor,而不是继承自中间的EntityProcessorBase类,简要类图如下包装类额外添加了缓存处理以及格式转换等功能,然后调用SqlEntityProcessor相应方法进行处理,相当于SqlEntityProcessor的代理类,共同继承自抽象类EntityProcessor(SqlEntityProcessor 是通过EntityPro
转载
2012-09-09 19:05:00
57阅读
2评论
在介绍DocBuilder类之前,我们先来解读数据导入对应实体处理器EntityProcessor,默认的实体处理器为SqlEntityProcessorEntityProcessor为抽象类,具体方法由子类实现packageorg.apache.solr.handler.dataimport;importjava.util.Map;publicabstractclassEntityProcessor{publicabstractvoidinit(Contextcontext);publicabstractMap<String,Object>nextRow();publicabst
转载
2012-09-09 18:22:00
75阅读
2评论
我写这系列solr数据导入源码分析主要是解决我们在编程方式导入数据库数据的时候,怎么解决大数据集导入索引的内存溢出问题的如果数据表的数据不大,用常规方法不会产生内存溢出的问题,当数据表数据上千万级的时候,可参考solr自带的数据导入方式我刚开始用编程方式添加solr索引的时候,很容易产生内存溢出问题,所以我就想考究solr自带的数据导入是怎么处理大数据集索引添加的;网上一些参考的方法通常是采取类似数据分页的方式,个人感觉比较拙劣,并且在针对不同数据库的时候,采取类似数据分页方式还要考虑不同数据库分页方式的差异(数据库方言),而且容易出现性能等问题。我的处理方式如下DatabaseResourc
转载
2012-09-10 00:57:00
15阅读
2评论
MySQL 版本:8.0.23Solr版本:7.7.2操作步骤:第一步:导入相关jar包solr-dataimport
原创
2022-06-27 11:26:53
185阅读
一、安装环境1. centos (7.2.1511)[root@test-2021 opt]# lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarchDistributor ID:
原创
2022-06-27 11:27:43
322阅读
1、solr基本操作1.1、基本概念Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化solr就是在lucene工具包的基础之上进行了封装,而且是以web服务的形式对外提供索引功能业务系统需要使用到索引的功能(建索引,查索引)时,只要发出http
转载
2023-09-19 10:34:24
115阅读
Solrflux开源codegoogle地址http://code.google.com/p/solrflux/1.Solrflux概述Solrflux主要工作是完成Sql语法到solr语法的转换,并执行查询,保存结果。当前solrflux已经停止更新了,还是2010.Marantlr3.2.jar、1.4solrj的版本。Solrflux支持select|update|delete|optimz
原创
2012-10-15 08:47:00
495阅读