Apache Solr 剖析
来源:互联网 发布:赵泓霖网络课视频 编辑:程序博客网 时间:2024/05/09 10:33
本文是Apache Solr介绍的姊妹篇,我将逐一分析Apache Solr的各个包,力图详细地分析Solr的设计和架构。Apache Solr由12个包组成,如下:
- org.apache.solr.analysis
- org.apache.solr.core
- org.apache.solr.request
- org.apache.solr.schema
- org.apache.solr.search
- org.apache.solr.search.function
- org.apache.solr.servlet
- org.apache.solr.tst
- org.apache.solr.update
- org.apache.solr.util
- org.apache.solr.util.test
- org.apache.solr.util.xlst
Apache Solr尚处于发展期,目前版本才是1.1.0。文档的注释非常少。我们先从使用者的角度出发,最先看到的当然是servlet,因为Solr本身是个独立的网络应用程序,需要在Servlet容器中运行来提供服务,所以servlet是用户接触的最外层。
我们看看org.apache.solr.servlet包。这个包很简单,只有两个类:SolrServlet和SolrUpdateServlet.我们很容易从类名中猜出这两个类的用途。
SolrServlet类继承HttpServlet类,只有四个方法:
- init()
- destroy()
- doGet()
- doPost()
SolrServlet类中除了普通的Java类对象(包括Servlet相关的)外,有四个Solr本身的类,还有一个Solr本身的异常。其中两个类和一个异常属于org.apache.solr.core包,两个类属于org.apache.solr.request包。属于core包的有:
- Config:
- SolrCore:
属于request包的有:
- SolrQueryResponse:
- QueryResponseWriter:
分析一下这个SolrServlet类。
首先servlet会调用init()方法进行初始化:通过Context查找java:comp/env/solr/home来确定Solr的主目录(home),接着调用Config.setInstanceDir(home)方法设置这个实例的目录。然后通过SolrCore.getSolrCore()来获得一个SolrCore实例。
destroy()方法将会在Servlet对象销毁时调用,仅仅调用core.close()关闭SolrCore实例。
当用户请求进来时doPost()简单地将任务交给doGet()完成,主要的任务由doGet()完成。
分析一下doGet()方法:
- 使用SolrCore和doGet()参数request生成一个SolrServletRequest对象(注意:这个SolrServletRequest类不是公开类,位于org.apache.solr.servlet包中,继承了SolrQueryRequestBase类,仅仅接受SolrCore和HttpServletRequest对象作为参数)
- 然后SolrCore执行execute()方法(参数为SolrServletRequest和SolrQueryResponse)
由此可见,真正的处理核心是SolrCore的execute方法。下一篇文章我们继续分析。
- Apache Solr 剖析
- Apache Solr 剖析系列(1)
- Apache Solr
- apache solr
- apache+solr
- Apache Solr
- 剖析solr实用性
- Apache Solr 介绍
- 搜索引擎 apache-solr
- apache solr helloworld
- apache solr 标准安装
- Apache Solr 启动
- apache solr 安装
- Solr with Apache Tomcat
- Apache Solr 初级教程
- apache solr EmbeddedSolrServer
- apache 搜索引擎solr试用
- 如何监控 Apache Solr ?
- 纯C++的Socket访问Http封装类
- javascript 获得checkbox所选择值
- php中获取复选框checkbox值的问题
- 腊八节的由来和习俗
- 优秀程序员的十个习惯
- Apache Solr 剖析
- 静态网页
- unicode
- Google Maps API in Java ME
- ubuntu mysql远程连接
- 从今天起小乌龟移民到CSDN来,嘿嘿。。清净。来记点自己学习中的点滴。
- Exe 字符串循环右移n位
- Fckeditor you have no permissions to create the folder问题及解决办法
- Ubuntu9.10 下面安装Pidgin2.6.*