Solr1.3的核心机制

内核调用机制

从图3-3可以看出Solr1.3服务器包含一个实现基本功能的核心API,也可称之为内核。所有功能的实现都通过对内核API的调用来实现。Solr1.3的内核API提供的接口具有高内聚低耦合的特点。低耦合主要体现在仅仅通过一个API函数(execute)就可以实现包括信息查询和索引管理的功能。execute函数调用格式如图3-3所示。

图3-3 Solr内核API调用格式

虽然对于信息查询和索引管理(包括索引添加,更新和删除)都使用相同的API调用,但是API参数却不同。对于查询请求SolrRequestHandler为负责信息查询的Handler,SolrQueryRequest为信息查询参数, SolrQueryResponse为搜索结果。而对于索引管理SolrRequestHandler为专门负责索引管理的Handler,SolrQueryRequest为索引更新请求,SolrQueryResponse为索引管理操作的结果。

内核API的低耦合结构使得对外具有简约,清晰的逻辑结构;execute方法参数子类型的多样性又使得该方法具有强大的功能。

分库机制

分库机制(也叫多核心机制)是Solr1.3中引入的新机制,这个机制在实际的应用中有很强的需求。例如,用户不希望普通文档(Word、PDF等)的索引数据与网页的索引数据混合,同时希望可以选择是查询普通文档还是查询网页,这时候索引分库很有必要。

Solr1.3的分库可以这样实现:在主目录下建立一个文件夹(或多个,代表库),该文件夹下建立名为config和data的文件夹,config文件夹下存放自定义的schema.xml文件和solrconfig.xml文件,data文件夹下存储索引数据;在主目录下的solr.xml中将上面建立的库添加进来,具体格式见3.3.2小节。

Solr1.3的各个库对应服务器的各个核心,各个核心之间是相互独立的,每个核心可以具有独立的文档模式和系统属性。

缓存机制

搜索引擎的响应速度是搜索引擎性能的重要衡量指标。由于索引数据是保存在硬盘上的,硬盘作为外围设备,访问速度比较慢;同时由于查询器从索引数据库中获得相应的查询结果,也会花一定得时间和资源进行一些计算;所以查询的速度存在一定的瓶颈。多个用户的查询中可能存在重复查询的情况,这提供了一个机会让我们将一些查询结果缓存起来,下次用户再查询时就可以从缓存中快速地获得查询结果。

Solr提供了强大的缓存机制来提高性能。表3-15列出了Solr提供的各种缓存。

表3-15 Solr中的缓存

filterCache

文档ID的无序集,可以实现在一定得文档内进行精确查询

queryResultCache

文档ID的有序表,根据一定得策略排序的某个查询的结果文档

documentCache

存储从磁盘中获得的Document的对象

User Caches

自定义缓存

Solr还提供了缓存“预热”(warm)机制,也就是在缓存建立时采取何种方式来获得缓存中的数据,其中常用的一种是从已有的缓存中拷贝过来。

扫一扫超人学院微信二维码:

时间: 2024-10-18 13:25:46

Solr1.3的核心机制的相关文章

Spring 的核心机制:依赖注入(控制反转)

一.说到依赖注入(控制反转),先要理解什么是依赖. Spring 把相互协作的关系称为依赖关系.假如 A 组件调用了 B 组件的方法,我们可称A 组件依赖于 B 组件. 二.什么是依赖注入. 在传统的程序设计过程中,通常由调用者来创建被调用者的实例. 在依赖注入的模式下,创建被调用者的工作不再由调用者来完成,因此称为控制反转:创建被调用者实例的工作通常由Spring 容器来完成,然后注入给调用者,因此也称为依赖注入. 三.依赖注入的好处. 依赖注入让 Spring 的 Bean 以被指文件组织在

李洪强iOS开发之RunLoop的原理和核心机制

李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研究了RunLoop的原理和特性. RunLoop的定义 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程.RunLoop就是控制线程生命周期并接收事件进行处理的机制. RunLoop是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统. Foundation: NSRunLo

MFC六大核心机制之二:运行时类型识别(RTTI)

上一节讲的是MFC六大核心机制之一:MFC程序的初始化,本节继续讲解MFC六大核心机制之二:运行时类型识别(RTTI). typeid运算子 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属于某个类,我们平时用C++编程接触的RTTI一般是编译器的RTTI,即是在新版本的VC++编译器里面选用“使能RTTI”,然后载入typeinfo.h文件,就可以使用一个叫typeid()的运算子,它的地位与在C++编程中的sizeof()运算子类似的地方(包含一个头文件,然后就有一个熟悉好用的函数

MFC六大核心机制之一:MFC程序的初始化

MFC六大核心机制概述 我们选择了C++,主要是因为它够艺术.够自由,使用它我们可以实现各种想法,而MFC将多种可灵活使用的功能封装起来,我们岂能忍受这种"黑盒"操作?于是研究分析MFC的核心机制成为必然. 首先,列出要讲的MFC六大核心机制: 1.MFC程序的初始化.       2.运行时类型识别(RTTI).       3.动态创建.       4.永久保存.       5.消息映射.       6.消息传递. C++代码 #include <afxwin.h>

Spring进阶之路(1)-Spring核心机制:依赖注入/控制反转

我们常常会遇到这样一种情景.就是在我们开发项目的时候常常会在一个类中调用其它的类中的方法,来完毕我们期望的任务.大部分的情况下往往会採用在当前需要的这个类里面new一个实例出来.然后调用他的方法,那么这种话会有个问题.就是有一天我想改变下这个类,改为其它的名称.那么这时候必需要做的是同一时候去调用方的类文件里改变这个改变的类的名称.这种情况是由于代码的耦合带来了后期维护成本的添加,那么spring的出现就能够非常好的起到解耦的作用,而他的核心机制就是依赖注入. 依赖注入与控制反转 依赖注入:对于

Spring容器核心机制

Spring容器核心机制 一.背景 Spring内部最核心的机制就是IOC,控制反转.它可以让你再使用某一个对象的时候不用再去new了,只需要告诉Spring你要调用的对象的beanid就可以.这其实就是利用java里的反射,反射其实就是在运行时动态的去创建.调用对象,Spring就是在运行时,根据配置文件或注解来动态的创建对象,和调用对象里的方法的 . Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的

NASNet学习笔记——?? 核心一:延续NAS论文的核心机制使得能够自动产生网络结构; ?? 核心二:采用resnet和Inception重复使用block结构思想; ?? 核心三:利用迁移学习将生成的网络迁移到大数据集上提出一个new search space。

from:https://blog.csdn.net/xjz18298268521/article/details/79079008 NASNet总结 论文:<Learning Transferable Architectures for Scalable Image Recognition> 注 ??先啥都不说,看看论文的实验结果,图1和图2是NASNet与其他主流的网络在ImageNet上测试的结果的对比,图3是NASNet迁移到目标检测任务上的检测结果,从这图瞬间感觉论文的厉害之处了,值

《高性能SQL调优精要与案例解析》一书谈主流关系库SQL调优(SQL TUNING或SQL优化)核心机制之——索引(index)

继<高性能SQL调优精要与案例解析>一书谈SQL调优(SQL TUNING或SQL优化),我们今天就谈谈各主流关系库中,占据SQL调优技术和工作半壁江山的.最重要的核心机制之一——索引(index).我们知道,<高性能SQL调优精要与案例解析>一书中也再三强调索引对SQL调优的重要性,可是上篇文章中也谈到,只看案例和解决问题的具体方法,而不掌握SQL调优的基础知识,是没有用的,我们必须做到知其然,更要知其所以然,才能做到融会贯通,活学活用,进而将SQL调优技术掌握到炉火纯青的地步.

兄弟连区块链教程btcpool矿池源码分析核心机制总结及优化思考

btcpool矿池-核心机制总结及优化思考 核心机制总结 ①gbtmaker 监听Bitcoind ZMQ中BITCOIND_ZMQ_HASHBLOCK消息,一有新块产生,将立即向kafka发送新Gbt 另默认每5秒间隔(可从配置文件中指定)主动RPC请求Bitcoind,获取Gbt发送给kafka Gbt消息大小约2M,含交易列表 ②jobmaker 同时监听kafka KAFKA_TOPIC_RAWGBT和KAFKA_TOPIC_NMC_AUXBLOCK,以支持混合挖矿 接收的Gbt消息,如