`

solr是如何存储索引的

 
阅读更多
我发现一直理解错了,我一直以为分布式索引和分布式搜索是两个不同的事情,其实是一样的.把索引分布在多台计算机上,不就是正好实现了分布式搜索吗?既然索引已经分布式存储了,,因为搜索就是基于索引的,那搜索就自然是分布式的啦。.前面看网上一些理解,一直以为分布式索 引和分布式搜索是两个独立分开的过程,不知道理解的对不对? 

 

调研了一下,发现索引文件的数据结构相当复杂,这个好像是每提交一次建索引,就会将以前已生成的索引重新组织,而且还会生成新文件,所以如果采用在HDFS中追加写索引文件,那工作量将相当大,必须清楚了解索引文件数据结构及索引文件关联,下面有三篇对lucene索引结构的分析,我是没怎么看懂,有兴趣的可以看一下

3.http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623597.html

同理,用hbase来存放搜索索引文件也是不合理的,因为索引文件是分散管理,这些个小文件是互相关联的,每次都得把这些个小文件全取出来,才能正常查询

我现在知道为什么做分布式索引这么难呢?是因为索引小文件的整体关联性,不能随意拆分,我试了一下,如果将重新生成的段去掉后,那就不能 正常搜索,它会提示报错,少那个删去的文件。那分布式索引存储可行的方案就三种:

1.直接使用solr自带的分布式功能,即布署多台solr,选好master和slaves就可以了
2.使用HDFS分布式存储索引
3.使用Katta来管理索引

1.因为第一种索引文件是存储在多台机器的物理存储空间中的,而不是存在HDFS中,由于后面要用mahout做挖掘需要HDFS,所以第一种方案不适合
2.因为HDFS不适合存储大量小文件,会带来额外的计算开销。Nutch+solr的方案,也是将索引直接存在HDFS上的,没有考虑索引是小文件的问题,所以第二种直接将索引存在HDFS中并在HDFS中进行查询也是不可取的
参考资料:
1.hadoop如何处理小文件

既然索引文件是必须放在HDFS上的,而且还要避免小文件的问题,那么就只有两种方案可取:

1.直接通过java api将solr索引文件目录导到hdfs中,然后用katta来将索引切片
2.用Nutch将索引文件布署到hdfs中,然后用katta来将索引切片

第一种方案的优点是,不需要搭Nutch平台。如果是第二种方案,具说hadoop+lucene=nutch,这样是不是有点重复呢?nutch的一个重要组成部分就是网络爬虫,如果只是用来爬本地磁盘文件,,是不是有点大才小用呢?而且nutch更新索引相当麻烦,,需要修改脚本,而目前我们的系统是有 现成数据的,根本用不着nutch。nutch有两种方法实现分布式搜索:一种是将搜索的索引目录,设置在hdfs上;另一种是将索引分散拷到本地,然后用nutch server设置多个机器监听本地索引目录,后一种种需要手动操作,将索引拷到本地,但这一种更高效,因为好多资料都说不建议在 hdfs中直接查询

第一种方案的缺点是每提交一次索引,需要重新导一次索引文件到hdfs中,而且索引文件是调solrj来生成的,这个性能如何是未知的

第二种方案的优缺点自然就和第一种相反喽,第二种方案,还需要解决一个问题,那就是当上传一个新文档到gluster的时候,如何更新索引
 
开源项目LilyNut中也没提到如何存储及分发搜索索引

由于前面一直是在基于solr的基础上做的,,并且已经实现当新文档传到glusterfs中时,利用solrj来更新索引,所以想采用第一种方案,更新索引后,将索引文件同时提交到hdfs上,然后用katta来切分和管理索引
分享到:
评论
2 楼 recall992 2016-11-03  
山东分公司的风格[color=brown]岁的法国电视[/color]但法国大使馆
1 楼 xdlvpei 2012-08-06  
写的很好!

相关推荐

    solrdump:旨在从 Solr 读取原始索引的 Clojure 库

    solrdump 旨在从 Solr 读取原始索引的 Clojure 库动机Solr 和 Elasticsearch 都是建立在 Lucene 之上的。 但是,当您想从一种技术迁移到另一种技术时。 没有任何工具可以帮助您这样做。 较新版本的 Solr 内置了转储...

    根据nlp中互信息以及左右信息得到目标文件夹中的文本的重要短语,然后用solr建立索引

    IndexStart.java 在配置类中配置好参数之后,直接运行此程序,将会自动建立索引到Solr中,格式请查看对应类 SearchStart.java 查询类,指定字符查询,最后保存到配置类中指定的位置。 具体程序运行结果,请测试即可...

    Hbase 二级索引方案

    Lily HBase Indexer 使用 SolrCloud 来存储 HBase 的索引数据,当 HBase 执行写 入、更新或删除操作时,Indexer 通过 HBase 的 replication 功能来把这些操作抽象成一系 列的 Event 事件,并用来保证写入 Solr 中的 ...

    solr 5.5.5

    solr是将整个索引操作功能封装好了的搜索引擎系统(企业级搜索引擎产品) ...solr部署在专门的服务器上,它的索引库就不会受业务系统服务器存储空间的限制。solr支持分布式集群,索引服务的容量和能力可以线性扩展

    Solr 3.6.0 API CHM格式

    Apache Solr API 文档 chm格式带索引和全文检索,方便携带和查询 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后打开无法显示,这一般不是chm文件的问题,这里统一说明一下解决办法: 如果文件打开...

    Solr_4.2.1 docs API (CHM格式)

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...

    git-to-solr:将git历史记录索引到Solr存储库中

    将git历史记录索引到Solr存储库中。 将提交的内容(文件已更改等)表示为嵌套文档。 经过Solr 4.9测试。 受和启发。 通过从Solr发行版的示例目录运行java -Dsolr.solr.home = <project> / solr -jar start.jar来...

    solr-backup:用于备份solr索引的python脚本

    Solr 备份和上传到 aws s3 存储桶安装所需的依赖项pip 安装需求.txt 设置变量sesese3solr_url = "" # solr url " " backup_dir = "" # solr 备份目录 "/home/solr/backup" s3_upload = False # 如果要上传到 s3 存储...

    apache Solr API Docs 5.5.5 (CHM格式)

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...

    Solr的基本使用

    field属性:是否索引、是否存储、是否分词,是否多值multiValuedmultiValued:该Field如果要存储多个值时设置为true,solr允许一个Field存储多个值,比如存储一个用户的好友id(多个),商品的图片(多个,大图和小...

    solr-app-magnolia-module:Magnolia应用程序可在Magnolia Solr内容索引器和搜索提供程序模块上执行基本管理任务。 由Info.nl制造

    Solr App木兰模块包含用于的的,该充当Magnolia Solr搜索提供程序和Magnolia Solr内容索引器模块的可选附件。 它提供了检查Solr Search Provider模块中配置的Solr搜索服务器的基本方面的功能,并允许用户执行基本的...

    sophie:Solr浏览器和管理工具

    包含什么文档浏览器:列出,过滤和排序存储在Solr索引中的文档并检查其内容对文档的操作:创建,更新,删除,克隆Solr文档索引操作:清除,提交和优化索引管理工具:将索引导出到CSV文件中,备份和还原索引字段...

    whyte-dwarf:自定义搜寻器和自动Solr索引更新器

    在测试时,保存同一域的多个爬网/抓取,然后将所需的抓取数据推送到Solr,以准备进行索引和搜索。 我很快将添加简单的静态Solr适配器类,用于基于Silo的索引(基于域的键)的Example Schema.xml和用于示例使用的...

    typo3-find:TYPO3扩展提供Solr索引的前端

    找 TYPO3扩展旨在启用查询和显示任意Solr索引。 它提供了配置查询的许多方面的能力,例如查询字段,构面,通过TypoScript进行过滤–以及通过Fluid模板设置显示。 该扩展中包含标准显示功能的部分内容以及一些有助于...

    Solr优化案例分析

    本文来自于csdn,本文主要从Solr系统层面和索引字段优化两个方面进行优化以及展开一下的案例分析。随着umc接入主机的数量越来越多,每天产生的syslog日志数量也在剧增,之前一天产生syslog数量才不到1W,随着整个...

    论文研究-基于Solr的股票公告语料库系统实现 .pdf

    基于Solr的股票公告语料库系统实现,张浩波,潘维民,本文通过爬虫获取了中国沪深股市上市公司和监管机构的公告文件,借助Apache Tika进行文本抽取,于Solr中进行索引,形成了一个公告文件

    onsqlcodec:自定义 Apache Solr 编解码器,用于将基于 SolrCloud 的索引与 Oracle NoSQL 键值集群存储无缝集成

    这是自定义 Solr 编解码器,用于将基于 SolrCloud 的索引与 Oracle NoSQL 键值集群存储无缝集成。 该代码是使用 Solr 4.10.1 API 和 NoSQL 3.0 API 版本创建的,旨在在 SolrCloud 集群中使用。 它的主要目的和优势...

    Mining Solr in Action最新英文版本pdf

    本英文书是针对Solr 4.7版本的实战性非常强的动手教程,无任何solr基础的人都会很容易从入门成长为高手,同时,该书穿插大量实例,覆盖solr4.7的方方面面,包括高级篇,如搜索性能优化,搜索结果缓存,索引分片,...

    docker-solr:用于Solr的Docker构建,用于管理官方Docker Hub solr映像

    Apache Solr具有高度的可靠性,可扩展性和容错性,可提供分布式索引,复制和负载平衡查询,自动故障转移和恢复,集中式配置等。 Solr为许多世界上最大的互联网站点提供搜索和导航功能。 在和《 了解更多信息。 ...

    sunspot_index_queue:对 sunspot gem 的异步 Solr 索引支持

    此 gem 支持使用 sunspot gem 异步更新 Solr 索引。 为什么异步 如果Solr的下跌,你的申请将不(一定)会下降 由于 Solr 作为应用程序基础架构的不同部分运行,因此在应用程序的其余部分工作正常时,它总是有可能...

Global site tag (gtag.js) - Google Analytics