- 浏览: 248660 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
sweed0:
为何每一段代码都重复一次呢?
spring注解实例二 -
Gary_Huangpf:
- - 插件报错啊
Ext前台分页 -
ddvk2007:
版主 我想請問你所說的mapreduce是hadoop的還是g ...
MapReduce中的Shuffle和Sort分析 -
人可木:
好问章,楼主写的相当详细。。。多谢。。。
findbugs插件的安装与应用 -
hautbbs:
按照博主的方法启动调试出现jvm terminated.Ex ...
10分钟学会使用MyEclipse断点调试js
1.拦截请求,解析请求并构建相应的handler。 发送检索请求,例如:http://localhost:8983/solr3.5/core2/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on 首先他将被SolrDispatchFilter拦截。 通过对request的分析,获知当前request是做什么的(/select),并构造相应的handler(SearchHandler)。 2.SolrCore出面处理上层工作(具体工作交由handler处理) 将handler、SolrQueryRequest、SolrQueryResponse交由solrCore的execute方法处理 在该方法中主要还是由handler来完成的。 SolrRequestHandler是一个接口,他主要的方法就是: SolrRequestHandler的实现类的结构图如下: 其中RequestHandlerBase为大部分的Handler实现了部分功能,主要包括 然而具体怎么做就交给具体的子类去执行了!(handleRequestBody( req, rsp );) 例如:这里是做检索,那么就交由SearchHandler处理。 (这里的设计方式有点类似于servlet,GenericSerlet实现了一些公用方法,而具体的则有其子类完成,例如HttpServlet) 3.SearchHandler具体的检索过程 现在的检索没有使用shards,在跟踪代码的过程中,发现以下过程是检索的主要环节。 从中可知真正的检索需要经过多个SearchComponent,在当前的实验环境下包括6个,如下: 4.各个SearchComponent配合工作完成检索 我们先重点了解QueryComponent。 获得SolrIndexSearcher,这个对象是检索的主要执行者。 同时获取SolrIndexSearcher.QueryCommand、SolrIndexSearcher.QueryResult,并将其作为查询条件和查询结果提交给SolrIndexSearcher进行检索。 在SolrIndexSearcher中search方法如下: getDocListC又是一个比较复杂的方法,在这里加入的cache。 如果当前检索被缓存了(缓存也是个重点内容,后续详细分析!),那么直接返回结果,否则重新进行检索,检索的方法是: 在该方法中,和我们使用lucene进行检索十分相似,采用的具体方法是: 检索完成将结果进行封装,放入QueryResult当中。 检索完成后,将结果放入缓存中,“造福后人”! 至此QueryComponent的工作就算完成了。 如果做简单查询(如:http://localhost:8983/solr3.5/core2/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on) 那么后面5个Component就直接过了(没有真正被执行)。 5.收尾工作 将结果封装好,写入相应的ResponseHeaders,关闭SolrQueryRequest、solrCore。 ----------------------------------------------------- 以上是solr-searching最粗略的过程,本着先脉络后细节的思想,以后再对各个重要环节做深入分析。 searching主要执行方法如下: SolrDispatchFilter(doFilter,execute) ->SolrCore(execute) ->RequestHandlerBase(handleRequest) ->SearchHandler(handleRequestBody) //有可能执行多个Component ->QueryComponent(process) ->SolrIndexSearcher(search,getDocListC) 转载自:http://www.cnblogs.com/huangfox/archive/2012/02/09/2344686.html
doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
public
void
execute(SolrRequestHandler handler, SolrQueryRequest req, SolrQueryResponse rsp)
public
void
handleRequest(SolrQueryRequest req, SolrQueryResponse rsp);
public
void
handleRequest(SolrQueryRequest req, SolrQueryResponse rsp){
......
handleRequestBody( req, rsp );
......
}
if
(!rb.isDebug()) {
// Process
for
( SearchComponent c : components ) {
<strong> c.process(rb);</strong>
}
}
searcher.search(result,cmd);
public
QueryResult search(QueryResult qr, QueryCommand cmd)
throws
IOException {
<strong>getDocListC(qr,cmd);</strong>
return
qr;
}
private
void
getDocListNC(QueryResult qr,QueryCommand cmd)
super
.search(query, luceneFilter, collector);
qr.setDocList(
new
DocSlice(
0
,sliceLen,ids,scores,totalHits,maxScore));
发表评论
-
solr服务器复制、服务器分发(shard)、Multicore(分片)配置,SolrJ的使用
2012-07-16 15:23 7314Solr服务器复制的配置 1,首先测试在本机上开启三个t ... -
Solr Replication(复制)是怎样工作的
2012-07-16 15:18 1179luence有一个 ... -
Solr Multicore 结合 Solr Distributed Searching 切分大索引来搜索
2012-07-13 17:58 944原文出处:http://blog.chenl ... -
solr学习资料收集
2012-07-13 17:57 1048学习新东西前,我一般都会先找些文章来看,整个原理呀 ... -
solr的配置参数理解
2012-07-11 11:35 1063l dataDir参数 用于替换默认的索引数据目录(. ... -
DataImportHandler从数据库导入大量数据而内存溢出的问题
2012-07-11 11:33 1602Solr有个很方便的 ... -
Solr 3.5 + Tomcat7 + mmseg4j + 搜狗词库 -配置并运行
2012-07-11 11:22 1480这是我看到过的写的较好的一篇入门文章,个人觉得相对有些文章 ... -
solrj之二次开发
2012-07-11 11:19 1619Solrj已经是很强大的solr客户端了。它本身就包装了htt ... -
SOLR搭建企业搜索平台
2012-05-24 18:34 1814一、SOLR搭建企业搜索平台--MultiCore Solr ... -
solr理论
2012-05-24 17:11 10841、 solr基础 因为 Solr 包装并扩展了 Luc ... -
solr中Schema.xml和solrconfig.xml分析
2012-05-24 17:09 1701一、字段配置(schema) schema.xml位于s ... -
solr部署
2012-05-21 18:45 10101,从官方网站下载solr:apache-solr-3 ... -
lucene检索运算符
2012-05-05 13:05 1148lucene检索运算符: 1. “:” 指定字段查指定值 ... -
当前几个主要的Lucene中文分词器的比较
2012-01-05 15:36 14971. 基本介绍: paoding :Lucene ... -
全文检索lucene的使用和优化
2012-01-05 15:35 16641 lucene简介 1.1 什么是lucene L ... -
关于几种中文分词的比对
2011-12-06 09:34 1530目前lucene自身提供的StandardAnalyze ... -
lucene 索引 原理
2011-12-06 09:33 815Lucene是一个高性能的java ... -
lucene中QueryParser操作符的疑惑
2011-11-25 16:15 893在测试Lucene搜索时,对于 AND 与 + 的区别研 ... -
lucene学习资料收集
2011-11-25 16:09 817由于公司用到lucene,现对看到过的帮助较大的luce ... -
利用 Heritrix 构建特定站点爬虫
2011-11-25 15:41 866本文由浅入深,详细介绍了 Heritrix 在 Ecl ...
相关推荐
### 常用算法与数据结构详解 #### 一、引言 《常用算法和数据结构(Sorting and Searching Algorithms)》是一本由Thomas Niemann编写的实用指南书,旨在为读者提供一系列关于排序和查找算法的基本知识。这本书...
TVM量化流程详解 #### 2.1 注释(Annotate) - **定义与目的**:注释阶段是在模型中插入模拟量化操作的过程。这一步是为了模拟从浮点量化到整数的舍入误差和饱和误差。 - **实现方式**: - 通过注册特定的注释...
### 搜索阶段(Searching Phase) - **Learning Algorithm**:学习算法用于探索不同的量化策略,以找到最优解。它根据硬件描述和模型拓扑调整量化参数。 - **Hardware Description**:提供硬件的详细信息,如支持的...
**全文检索技术与Lucene详解** 全文检索是一种在大量文本数据中快速查找包含特定词汇或短语的信息的技术。在互联网时代,随着数据量的爆炸性增长,高效、准确的全文检索变得至关重要。Lucene,由Apache软件基金会...
### MTK键盘锁与解锁详解 #### 一、MTK键盘锁概述 MTK平台作为移动设备中的一个重要组成部分,提供了多种安全性和用户体验的功能。其中,键盘锁作为一种基本的安全功能,在防止误操作、保护用户隐私等方面起到了...
此外,“while he was searching”是一个时间状语从句,表明动作发生的时间。 3. 阅读理解与推理能力:考生需要理解题目的情境,例如第103题,通过上下文推断出小偷在搜寻过程中会四处散落纸张的行为,从而选择...
《C#实现三国华容道求解与演示详解》 三国华容道,这是一款源自中国古老智慧的游戏,挑战玩家的逻辑思维与空间想象能力。本文将深入探讨如何使用C#编程语言,实现华容道的求解算法及动态演示功能。 首先,我们要...
**Lire图片搜索图片样例详解** 在信息技术领域,图像搜索是不可或缺的一部分,尤其是在大数据和人工智能的背景下。Lire(Lucene Image REtrieval)是一个Java库,它为图像搜索引擎提供了一种简单而高效的方法。这个...
1. **第一列文档碎片识别**:通过空白区域搜索算法(Blank-Area-Searching Algorithm)识别原始文档的第一列文档碎片。这一阶段的目标是确定文档的起始部分,为后续的拼接提供基础。 2. **相邻文档碎片匹配**:采用...
【PRSMC算法详解】 PRSMC(Parallel Range-based Searching Multidimensional Classification)是一种高效的并行多维分类算法,特别适用于处理高速网络应用中的多维度数据包分类问题。该算法充分利用高性能并行...
【知识点详解】 1. 文物(Cultural Relics)与稀有和价值的关系 文物并不总是需要同时具备稀有和价值这两个特征。文物通常是指具有历史、艺术或科学价值的物品,它们反映了某个时期的文化、社会或技术发展。"rare...
**Lucene.NET中文帮助文档详解** Lucene.NET是一款开源全文搜索引擎库,它是Apache Lucene项目在.NET框架下的实现。这个库提供了高级的信息检索服务,包括文本分析、索引和搜索功能,广泛应用于各种需要高效搜索...
【Nutch 0.8 知识点详解】 Nutch 是一个开源的、基于 Lucene 的网络搜索引擎项目,它提供了一套完整的搜索引擎解决方案,包括网页抓取、索引和搜索功能。Nutch 0.8 版本尤其值得关注,因为它完全使用 Hadoop 进行了...
5. **搜索(Searching)**:通过查询对象,Lucene能高效地在索引中查找匹配的文档,返回排名靠前的结果。搜索算法基于TF-IDF和 BM25等。 6. **排序与评分(Scoring)**:Lucene根据相关性对搜索结果进行排序,...
分布式搜索引擎Nutch开发详解 Nutch是一款开源的、基于Java实现的全文搜索引擎,它主要用于构建大规模的网络爬虫系统,并提供了对抓取的网页进行索引和搜索的功能。Nutch与Hadoop紧密集成,能够充分利用分布式计算...
**基于Lucene搜索引擎的Java源码详解** Lucene是一个高性能、全文检索库,它由Apache软件基金会开发并维护。此Java源码包提供了一个全面的示例,展示了如何利用Lucene进行索引创建、更新(增量索引)以及搜索操作。...
- **Searching For Maven Artifacts and Java classes**:演示如何搜索Maven仓库中的构件和Java类。 - **Indexing Maven Repositories**:解释了索引Maven仓库的重要性及其操作步骤。 - **Using the Form-based ...
**Lucene 搜索引擎详解** Lucene 是一个由 Apache 软件基金会开发的全文搜索引擎库,它在 Apache Jakarta 项目下属于一个重要的开源组件。Lucene 的设计目标是为软件开发者提供一个简单且可扩展的接口,以便在他们...
### Boyer–Moore–Horspool 算法详解 #### 一、算法概述 Boyer–Moore–Horspool 算法是一种高效的字符串搜索算法,它由 Robert S. Boyer 和 J Strother Moore 在 1977 年提出,并在后续的研究中得到了进一步的...