- 浏览: 241969 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
sweed0:
为何每一段代码都重复一次呢?
spring注解实例二 -
Gary_Huangpf:
- - 插件报错啊
Ext前台分页 -
ddvk2007:
版主 我想請問你所說的mapreduce是hadoop的還是g ...
MapReduce中的Shuffle和Sort分析 -
人可木:
好问章,楼主写的相当详细。。。多谢。。。
findbugs插件的安装与应用 -
hautbbs:
按照博主的方法启动调试出现jvm terminated.Ex ...
10分钟学会使用MyEclipse断点调试js
Solr Multicore 结合 Solr Distributed Searching 切分大索引来搜索
- 博客分类:
- 搜索引擎(lucene/solr)
原文出处:http://blog.chenlb.com/2009/01/solr-multicore-work-with-solr-distributed-searching-to-search-big-index.html (系列博文,大牛!)
Solr Distributed Searching (分布式搜索) 是 solr 1.3 的特性。大索引,可能有多种原因要把它分成N个小的索引,可以把小索引放到其它的机器上,但是我没这么多机器怎么办呢?solr 1.3 有 multicore,恩,multicore 简单使用 可以看我那一篇文章。各个 core 各不干扰,可以独立做索引(做索引时,可以分散到各个core上)。
现来看下 Distributed Searching 的效果,打开:http://localhost:8080/solr-cores/core0/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&shards=localhost:8080/solr-cores/core0,localhost:8080/solr-cores/core1 可以看到三条记录,core0 一条,core1 二条。
接着会有一个问题:原来很多程序调用 solr,用如 localhost:8080/solr-cores/select/?q=*%3A* 。又不想改原来的调用的代码,能不能做到透明呢,探索...
记得以前看 solr 文档时可以定义一些默认的查询参数,那 shards 参数也应该可以写在配置里。然后再 core0 的 solrconfig.xml 文件里的 standard request handler 里加入这参数,如:
- <requestHandler name="standard" class="solr.SearchHandler" default="true">
- <!-- default values for query parameters -->
- <lst name="defaults">
- <str name="echoParams">explicit</str>
- <str name="shards">localhost:8080/solr-cores/core0,localhost:8080/solr-cores/core1</str>
- </lst>
- </requestHandler>
马上运行下,但好长时间没有结果,CPU使用率很高,深思了下,.... 估计是死循环,因为solr解析shards后,调用shard时,是用默认的request handler。而其中一个shard又是core0(自身),那就等于不会结果的递归。所以这种方法不行。要避免死循环,就不要core0来做合并,可 以找其它。于是我就加了一个tomcat实例如localhost:8080/solr来做代理(合并结果),结果成功运行。
想来想去,能不能不要另一个tomcat实例呢,直接就用一个 core,继续再探索... 。
我再开一个 core 就命名为 core,复制core0为core。把原来core0/solrconfig.xml的配置的shards去掉,然后在 solr1.3/example/multicore/solr.xml里加,如:
- <?xml version="1.0" encoding="UTF-8" ?>
- <solr persistent="false">
- <cores adminPath="/admin/cores">
- <core name="core" instanceDir="core" />
- <core name="core0" instanceDir="core0" />
- <core name="core1" instanceDir="core1" />
- </cores>
- </solr>
结果成功运行。其中,core0、core1是有数据的,而core是没数据的,core只是运行合并。问题虽然可以差强人意地解决。但是还有一个 问题:原来的程序要调用solr,所有url不能改变,加了core是要改url 的,看源码时发现它可以为core名定义别名,就是用“,”号隔开。改为如下:
- <?xml version="1.0" encoding="UTF-8" ?>
- <solr persistent="false">
- <cores adminPath="/admin/cores">
- <core name="core,," instanceDir="core" />
- <core name="core0" instanceDir="core0" />
- <core name="core1" instanceDir="core1" />
- </cores>
- </solr>
"core,,"为什么是两个","号呢?。"core,"解析不出两个名,所有就无别名了。"core,,",解析出两个名,一是:"core,一是:"" 空串。有了空串就可以原来的url可以到达core(合并的core)。
至于死循环问题,同事在看源码,看是否不用多加一个额外的core来合并。结果他发现一个shard.qt的参数可以解决此问题,本质就是让所有的 shard调用不用默认request handler,shard.qt可以做到这一点,使所有的shard调用都加qt参数。
现来改为最后的方案,在core0与core1的solrconfig.xml里加一个request handler如:
- <requestHandler name="shard" class="solr.SearchHandler" />
然后再core0的solrconfig.xml的默认request handler加shards参数,与shards.qt为shard(shard request handler),如:
- <requestHandler name="standard" class="solr.SearchHandler" default="true">
- <!-- default values for query parameters -->
- <lst name="defaults">
- <str name="echoParams">explicit</str>
- <str name="shards.qt">shard</str>
- <str name="shards">localhost:8080/solr-cores/core0,localhost:8080/solr-cores/core1</str>
- </lst>
- </requestHandler>
然后在,solr.xml里的core(没数据的去掉),把core0加上空的别名,如:
- <core name="core0,," instanceDir="core0" />
当然也可以在core1里加相同的参数,这样core0与core1的功能是一样的,就是两个搜索的url都可以找到所有的数据,我认为:每个配置 一样,在索引分到其它机器的时候比较有作用(如果这样,可以不用multicore的形式,即原始形式),在外面看不出是几个索引的,同时合并的任务也均 匀一些。
Solr Distributed Searching 当然也会消耗,合并的core会向每个shard的core发送两次请求:第一次是找id;第二次是根据id再找文档。如果有N个shard,可以认为有 2N+1次请求,1是作合并的请求,其中2N的请求(发每个shard发送的)是用二进制协议通信,性能比xml协议好。
发表评论
-
solr服务器复制、服务器分发(shard)、Multicore(分片)配置,SolrJ的使用
2012-07-16 15:23 7244Solr服务器复制的配置 1,首先测试在本机上开启三个t ... -
Solr Replication(复制)是怎样工作的
2012-07-16 15:18 1083luence有一个 ... -
solr学习资料收集
2012-07-13 17:57 1010学习新东西前,我一般都会先找些文章来看,整个原理呀 ... -
Searching过程详解
2012-07-11 11:41 10191.拦截请求,解析请求并构建相应的handler。 发送 ... -
solr的配置参数理解
2012-07-11 11:35 1012l dataDir参数 用于替换默认的索引数据目录(. ... -
DataImportHandler从数据库导入大量数据而内存溢出的问题
2012-07-11 11:33 1521Solr有个很方便的 ... -
Solr 3.5 + Tomcat7 + mmseg4j + 搜狗词库 -配置并运行
2012-07-11 11:22 1393这是我看到过的写的较好的一篇入门文章,个人觉得相对有些文章 ... -
solrj之二次开发
2012-07-11 11:19 1581Solrj已经是很强大的solr客户端了。它本身就包装了htt ... -
SOLR搭建企业搜索平台
2012-05-24 18:34 1780一、SOLR搭建企业搜索平台--MultiCore Solr ... -
solr理论
2012-05-24 17:11 10241、 solr基础 因为 Solr 包装并扩展了 Luc ... -
solr中Schema.xml和solrconfig.xml分析
2012-05-24 17:09 1660一、字段配置(schema) schema.xml位于s ... -
solr部署
2012-05-21 18:45 9761,从官方网站下载solr:apache-solr-3 ... -
lucene检索运算符
2012-05-05 13:05 1110lucene检索运算符: 1. “:” 指定字段查指定值 ... -
当前几个主要的Lucene中文分词器的比较
2012-01-05 15:36 14681. 基本介绍: paoding :Lucene ... -
全文检索lucene的使用和优化
2012-01-05 15:35 16141 lucene简介 1.1 什么是lucene L ... -
关于几种中文分词的比对
2011-12-06 09:34 1493目前lucene自身提供的StandardAnalyze ... -
lucene 索引 原理
2011-12-06 09:33 780Lucene是一个高性能的java ... -
lucene中QueryParser操作符的疑惑
2011-11-25 16:15 853在测试Lucene搜索时,对于 AND 与 + 的区别研 ... -
lucene学习资料收集
2011-11-25 16:09 770由于公司用到lucene,现对看到过的帮助较大的luce ... -
利用 Heritrix 构建特定站点爬虫
2011-11-25 15:41 831本文由浅入深,详细介绍了 Heritrix 在 Ecl ...
相关推荐
Solr的Multicore(分片)配置,内容很好!
ES和solr都是基于Lucence的搜索框架,文档比较2中方案适合的不同场景和优劣
Solr实现电扇站内搜索Solr实现电扇站内搜索Solr实现电扇站内搜索Solr实现电扇站内搜索
资源名称:相关性搜索 利用Solr与Elasticsearch创建智能...从这《相关性搜索:利用Solr与Elasticsearch创建智能应用》中你可学会如何结合各种外部数据源、 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
Solr结合Java所需Jar,Solr结合Java所需Jar,Solr结合Java所需Jar
NULL 博文链接:https://ldcsunnyboy.iteye.com/blog/1113251
本书揭开了相关性搜索的神秘面纱,告诉大家如何将Elasticsearch 或Solr 这样的搜索引擎作为可编程的相关性框架,从而表达业务排名规则。从这本书中你可学会如何结合各种外部数据源、分类方法以及文本分析手段对...
Solr如何进行索引和搜索 索引:客户端(可以是浏览器可以是java程序)发送post请求到solr服务器,发给solr服务器一个文档(xml、json),就可以进行一个添加索引删除索引、修改索引的操作。 搜索:客户端(可以是...
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是...
Apache Solr lucene 搜索模块设计实现 Solr 模块 架构 lucene 搜索
什么是 Solr 大多数搜索引擎应用都必须具有某种搜索功能,问题是搜索功能往往 是巨大的资源消耗 并且它们由于沉重的数据库加载而...Solr 是一个开源搜索平台,用于构建搜索应用程序。 它建立在 Lucene(全文搜索引擎)
solr搜索服务器安装配置--资料备份
基于Solr的分布式实时搜索模型研究与实现
Solr 依存于Lucene,因为Solr底层的核心技术是使用Lucene 来实现的,Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的...
类似京东,淘宝搜索自动补全功能。通过suggest.js插件来完成功能开发。
solr.warsolr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包...
全文搜索技术solr Demo
solr7.5搜索框架 各种企业都在用 使用广泛 无需安装 解压就能用
图片上传下载 整合solr 引擎搜索 支持分词、高亮搜索等操作