`
alartin
  • 浏览: 207928 次
社区版块
存档分类
最新评论

Apache Solr 剖析系列(1)

阅读更多
本文是Apache Solr介绍的姊妹篇,我将逐一分析Apache Solr的各个包,力图详细地分析Solr的设计和架构。Apache Solr由12个包组成,如下:
  1. org.apache.solr.analysis
  2. org.apache.solr.core
  3. org.apache.solr.request
  4. org.apache.solr.schema
  5. org.apache.solr.search
  6. org.apache.solr.search.function
  7. org.apache.solr.servlet
  8. org.apache.solr.tst
  9. org.apache.solr.update
  10. org.apache.solr.util
  11. org.apache.solr.util.test
  12. 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包的有:
  1. Config:
  2. SolrCore:
属于request包的有:
  1. SolrQueryResponse:
  2. 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()方法:
  1. 使用SolrCore和doGet()参数request生成一个SolrServletRequest对象(注意:这个SolrServletRequest类不是公开类,位于org.apache.solr.servlet包中,继承了SolrQueryRequestBase类,仅仅接受SolrCore和HttpServletRequest对象作为参数)
  2. 然后SolrCore执行execute()方法(参数为SolrServletRequest和SolrQueryResponse)
由此可见,真正的处理核心是SolrCore的execute方法。下一篇文章我们继续分析。
分享到:
评论
3 楼 zhaoyongling721 2008-03-26  
支持  支持  继续分析啊   
2 楼 imjl 2007-01-26  
引用
Apache Solr尚处于发展期,目前版本才是1.1.0。


这句话不准确.

SOLR是从cnet出来的,,,是cnet应用lucene出来的产物..

还有很多大型网站已经应用. 可以见wiki的介绍.

1 楼 imjl 2007-01-25  
呵呵,,没想到有人再分析solr

相关推荐

    Apache Solr 架构分析内部设计篇PDF

    Apache Solr 架构分析内部设计篇PDF Solr 源码 架构 分析 设计

    Apache Solr 搜索架构分析外部设计篇PDF

    Apache Solr 搜索架构分析外部设计篇PDF Solr 源码 架构 分析 搜索

    apache-solr-4.0.0-ALPHA-src.gz官方包

    apache官方的solr4.0的源代码包,可以通过分析源代码提高理解,或者通过编译源码进行二次开发

    SolrLogReader:高性能的Apache Solr日志读取器解析器。 我经常要面对许多演出的Solr日志进行分析。 这就是我应付的方式

    可选的TextMatchAspect将提取具有匹配文本的所有日志,并且您可以根据需要指定任意数量的日志,例如: java -jar slr.jar / solr / logs org.apache.solr.cloud -o / results 注意: TextMatchAspect仅在使用-o指定...

    solr 企业搜索引擎教程

    Apache Solr 是一个开源的搜索服务器,Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。定制 Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一 个描述所有 Field 及其内容的 XML 文档就...

    lucene-solr-analysis-turkish:Apache LuceneSolr的土耳其语分析组件

    适用于Apache Lucene / Solr的土耳其语分析组件 在土耳其,开源软件的使用正日益增长。 Apache Lucene / Solr(和其他 )邮件列表上的土耳其用户正在增加。 该项目利用公共可用的土耳其语NLP工具从中创建。 我创建...

    Apache开源搜索引擎源代码分析

    用于描述apache开源的搜索引擎solor的源代码分析,详细描述了solor的配置、开发以及应用方法

    Solr全文搜索服务器-其他

    每个文档由一系列的Field构成,每个Field表示资源的一个属性Solr中的每个Document需要有能唯一标识其自身的属性,默认情况下这个属性的名字是id,在Schema配置文件中使用:id进行描述。 Solr是一个高性能,采用Java...

    maoristemmer:te kupu reoMāori的Snowball stemmer,以及LuceneSolr SnowballPorterFilterFactory的派生类

    并将其包含在分析器库中,以便DSpace和其他使用用于搜索的Apache Solr可以为字段类型指定除英语和其他语言之外的毛利词干快速入门(Lucene库) 要在Apache Solr 4.10.4(例如DSpace 6)中测试此词干分析器,请执行...

    SolrTextTagger:使用FST技术的基于Lucene Solr的文本标记器

    Solr文本标注器该项目使用Lucene FST(有限状态换能器)技术实现了基于Apache Lucene / Solr的“幼稚”文本标记器,该技术具有明显的低内存特性。 它之所以“天真”,是因为它在不考虑任何自然语言上下文的情况下...

    Vulnerability-implementation:nagios,zabbix,solr等平台一些漏洞的实现

    zabbix,solr等平台一些漏洞的实现Nagios core(CVE-2016-9565)Apache Solr XXE(CVE-2017-12629)Apache Solr RCE(CVE-2017-12629)Zabbix RCE (CVE-2017-2824)Zabbix 2.0 SQL Injection漏洞的搭建、分析与...

    lean:Lucene文本分析工具

    介绍 LEAN是一组Java工具,用于从文本文档中生成词频矩阵。 LEAN工具旨在与GTRI / GA Tech SmallK软件发行版兼容,该软件发行版... 可伸缩性:Lucene是用于为Apache Solr提供支持的搜索引擎,Apache Solr是一个高度可靠

    solr全文检索实现原理

    Lucene是apache软件基金会4jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...

    全文搜索引擎 ElasticSearch 还是 Solr?

    图片来自Pexels 最近项目组安排了一个...但是先不考虑本身设计的合理性,领导需要开发,所以我开始踏上了搭建 ES 服务的道路,从零开始,因为之前完全没接触过 ES,所以通过本系列来记录下自己的开发过程。 什么是全

    使用Python操作Elasticsearch数据索引的教程

    Elasticsearch是一个分布式、Restful的搜索及分析服务器,Apache Solr一样,它也是基于Lucence的索引服务器,但我认为Elasticsearch对比Solr的优点在于: 轻量级:安装启动方便,下载文件之后一条命令就可以启动; ...

    sparkler:火花履带

    Sparkler(Spark-Crawler的缩写)是一种新的Web爬网程序,它利用了分布式计算的最新进展和信息检索领域,将Spark,Kafka,Lucene / Solr,Tika和pf4j等各种Apache项目整合在一起。 Sparkler是可扩展,高度可扩展的高...

    大数据图标大全.docx

    HAWQ Hadoop With Query (是一个Hadoop原生大规模并行SQL分析引擎,针对的是分析性应用) Chukwa Apache Chukwa is an open source data collection system for monitoring large distributed systems. Kudu Kudu ...

Global site tag (gtag.js) - Google Analytics