- 浏览: 241519 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
sweed0:
为何每一段代码都重复一次呢?
spring注解实例二 -
Gary_Huangpf:
- - 插件报错啊
Ext前台分页 -
ddvk2007:
版主 我想請問你所說的mapreduce是hadoop的還是g ...
MapReduce中的Shuffle和Sort分析 -
人可木:
好问章,楼主写的相当详细。。。多谢。。。
findbugs插件的安装与应用 -
hautbbs:
按照博主的方法启动调试出现jvm terminated.Ex ...
10分钟学会使用MyEclipse断点调试js
Searching过程详解
- 博客分类:
- 搜索引擎(lucene/solr)
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 7236Solr服务器复制的配置 1,首先测试在本机上开启三个t ... -
Solr Replication(复制)是怎样工作的
2012-07-16 15:18 1076luence有一个 ... -
Solr Multicore 结合 Solr Distributed Searching 切分大索引来搜索
2012-07-13 17:58 914原文出处:http://blog.chenl ... -
solr学习资料收集
2012-07-13 17:57 1006学习新东西前,我一般都会先找些文章来看,整个原理呀 ... -
solr的配置参数理解
2012-07-11 11:35 1006l dataDir参数 用于替换默认的索引数据目录(. ... -
DataImportHandler从数据库导入大量数据而内存溢出的问题
2012-07-11 11:33 1512Solr有个很方便的 ... -
Solr 3.5 + Tomcat7 + mmseg4j + 搜狗词库 -配置并运行
2012-07-11 11:22 1387这是我看到过的写的较好的一篇入门文章,个人觉得相对有些文章 ... -
solrj之二次开发
2012-07-11 11:19 1575Solrj已经是很强大的solr客户端了。它本身就包装了htt ... -
SOLR搭建企业搜索平台
2012-05-24 18:34 1774一、SOLR搭建企业搜索平台--MultiCore Solr ... -
solr理论
2012-05-24 17:11 10191、 solr基础 因为 Solr 包装并扩展了 Luc ... -
solr中Schema.xml和solrconfig.xml分析
2012-05-24 17:09 1656一、字段配置(schema) schema.xml位于s ... -
solr部署
2012-05-21 18:45 9731,从官方网站下载solr:apache-solr-3 ... -
lucene检索运算符
2012-05-05 13:05 1105lucene检索运算符: 1. “:” 指定字段查指定值 ... -
当前几个主要的Lucene中文分词器的比较
2012-01-05 15:36 14671. 基本介绍: paoding :Lucene ... -
全文检索lucene的使用和优化
2012-01-05 15:35 16111 lucene简介 1.1 什么是lucene L ... -
关于几种中文分词的比对
2011-12-06 09:34 1489目前lucene自身提供的StandardAnalyze ... -
lucene 索引 原理
2011-12-06 09:33 776Lucene是一个高性能的java ... -
lucene中QueryParser操作符的疑惑
2011-11-25 16:15 851在测试Lucene搜索时,对于 AND 与 + 的区别研 ... -
lucene学习资料收集
2011-11-25 16:09 766由于公司用到lucene,现对看到过的帮助较大的luce ... -
利用 Heritrix 构建特定站点爬虫
2011-11-25 15:41 828本文由浅入深,详细介绍了 Heritrix 在 Ecl ...
相关推荐
solving solution by searching
softerware of pulsar searching
Searching for MobileNetV3翻译
False Nearest Neighbor Searching algorithm.在国内非常罕见的算法。为了解决科学研究的需求用来4周编译处理的。这个软件包市作经济分析的必备工具,当然,非线性系统中更是不可缺少的东西了。 由于该软件包的技术...
Reliable peers and useful resources Searching for the best personalised learning path in a trust- and recommendation-aware environment
The Art of Computer Programming Volume 3 Sorting and Searching, 2nd Edition
Sorting and Searching Algorithms:A Cookbook 常用算法数据结构
sorting and searching algorithms.pdf Thomas Niemann
Web Searching and Mining (Cognitive Intelligence and Robotics) ISBN-10 书号: 9811330522 ISBN-13 书号: 9789811330520 Edition 版本: 1st ed. 2019 出版日期: 2019-02-04 pages 页数: (176) This book ...
2008_Study on Searching-retrieving Behaviour in Designers' Ideation Process
The Information Age has enabled the search for information in ways never imagined before. The search criteria may be exact where the input query is expected to exactly match the search object, or ...
数据结构 查找算法,binary-search, sequential-search,
1975年,来自斯坦福大学的Jon Louis Bentley在ACM杂志上发表的一篇论文:Multidimensional Binary Search Trees Used for Associative Searching 中正式提出和阐述的了把空间划分为多个部分的k-d树。
证明五子棋带禁手时黑棋必胜Sp eculations and AI 1.2 Identifying the obstacles 1.3 Uncovering hidden obstacles 1.4 The problem statement : 1.5 1.6 Solving games 1.7 Thesis outline
这是关于机器学习的电子书,高清,最新版本,经典著作,英文版
斯坦福algorithm part1 Divide and Conquer, Sorting and Searching, and Randomized Algorithms python 版答案
some useful little program for new learner Graph Alg.:Red-Black tree,Dijkstra s algorithm,Depth first search and breadth first search. Heaps:Fibonacci heap source.... Searching:Array searching algorithms
Ulam’s searching game with
《计算机程序设计艺术》系列被公认为计算机科学领域的权威之作,深入阐述了程序设计理论,对计算机领域的发展有着极为深远的影响。本书为该系列的第3卷,全面讲述了排序和查找算法。书中扩展了卷1中数据结构的处理...
Neural Architecture Searching survey paper reading