基于Lucene的分布式搜索方法

文档序号:6424066阅读:81来源:国知局
专利名称:基于Lucene的分布式搜索方法
技术领域
本发明涉及一种搜索方法,尤其涉及一种基于Lucene的分布式搜索方法。
背景技术
搜索、索引和索引维护程序放在一台服务器上,配置上比较方便但带来的问题是,搜索并发量大的情况下,无法进行扩展,当索引数据量增大时,索引维护极其消耗服务器性能,会对搜索产生影响。概述Lucene描述及结构i.什么是 Lucene
Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种语言)。Lucene目前是ApacheJakarta家族中的一个顶级开源项目。它的作者是Doug Cutting,他是一位资深全文索引/检索专家。ii. Lucene系统基本结构Lucene提供的服务实际包含两部分一入一出。所谓入是写入,即将你提供的源(本质是字符串)写入索引或者将其从索引中删除;所谓出是读出,即向用户提供全文搜索服务,让用户可以通过关键词定位源。下图表示了一入一出,也表示了搜索应用程序和Lucene之间的关系写入流源字符串首先经过analyzer处理,包括分词,分成一个个单词后将源中需要的信息加入Document的各个Field中,并把需要索引的Field索引起来,把需要存储的Field存储起来并将索引写入存储器,存储器可以是内存或磁盘读出流用户提供搜索关键词,经过analyzer处理。对处理后的关键词搜索索引找出对应的Document。用户根据需要从找到的Document中提取需要的Field。a) Mapreduce Hadoop映射/归约框架是一个主/从(master/slave)架构.它由一个主服务器(Jobtracker)和若干从服务器(tasktracker)组成。主服务器是用户与系统打交道的关键。用户将自定义的映射/归约操作提交给主服务器。主服务器将操作放入作业队列中并按照先到先服务的原则对队列中的任务进行处理。主服务器用来将映射或者归约操作分配给不同的从服务器。从服务器在主服务器的控制下执行操作,同时,不同的从服务器间在映射和归约阶段也进行着数据传输b) Hadoop DFSHadoop的分布式文件系统(HDFS)被设计用来在集群计算机间存储大型数据文件。这个设计来源于Google文件系统(GFS)。Hadoop分布式文件系统将每一个文件作为一组数据块进行存储,一个文件中除了最后一个数据块的所有数据块都具有相同的大小。作为容错处理,这些数据块被复制成为了很多份。每一个文件的数据块大小和复制的份数是可以被管理员配置的。另外,值得注意的是,HDFS中的文件都是只写一次并且每一个时间点严格的只允许一个线程执行写操作。c)分布式框架描述原单机服务器搜索性能有极限。而且后期扩展几乎是不可能的,现有的solr,hibernateSearch无法满足现有的需求特此研究出一个基于lucene+hadoop+mapReduce的分布式并行搜索框架,能提供大数据量下搜索性能低下的解决方案。

发明内容
本发明的目的就是为了解决现有技术中存在的上述问题,提供一种基于Lucene的分布式搜索方法。本发明的目的通过以下技术方案来实现 基于Lucene的分布式搜索方法,其中包括有索引步骤与搜索步骤;所述的索引步骤为,步骤①,通过至少一台建立索引的索引主机,与至少两台从属服务器通过分布式文件系统方式结合;步骤②,索引主机不存储的索引内容均存储在从属服务器上,每次新建更新索引时,由索引主机计算每台从属服务器需要建立哪部分索引,然后将任务分发给每台从属服务器;步骤③,从属服务器在对应的数据源中获取对应的数据将其建成索引,且执行完后将索引情况汇报给索引主机;步骤④,如果步骤③建成索引失败,则索引主机再次发送重建命令给相应的从属服务器;所述的搜索流程为,步骤①,由至少一台搜索主机和至少两台从属服务器组成搜索引擎;从属服务器开放远程方法调用搜索接口,搜索主机通过远程方法调用搜索接口和从属服务器进行连接。步骤②,当用户进行查询时,搜索主机根据索引分布式策略判断出相应的索引数据存在哪些从属服务器上,然后发送给相应从属服务器查询命令;步骤③,从属服务器进行并发查询,并将结果返回给搜索主机,搜索主机将结果进行规约,然后将结果返回给用户。上述的基于Lucene的分布式搜索方法,其中所述索引步骤的步骤③中采用去重过程,每台从属服务器根据索引主机分发的去重算法独自去重,去重完后再由索引主机进行多个从属服务器的去重。进一步地,上述的基于Lucene的分布式搜索方法,其中所述索引步骤的步骤④中,索引全部建完后索引主机通知搜索主机索引有更新,然后搜索主机重加载索引。更进一步地,上述的基于Lucene的分布式搜索方法,其中所述索引步骤中,索引主机根据备份策略将从属服务器上的索引备份到对应的备份服务器上。更进一步地,上述的基于Lucene的分布式搜索方法,其中所述的搜索步骤中,搜索主机定时对从属服务器进行是否能正常查询的检测。更进一步地,上述的基于Lucene的分布式搜索方法,其中所述的搜索步骤中,当某个从属服务器无法连接或服务器断电时,搜索主机会尝试在从属服务器对应的备份服务器上搜索。再进一步地,上述的基于Lucene的分布式搜索方法,其中所述的基于Lucene的分布式搜索方法,其特征在于所述的搜索步骤中,当从属服务器和对应的备份服务器都不能搜索时,搜索主机会屏蔽相应的从属服务器搜索,返回其他从属服务器搜索到的数据,发送报警信息给管理员以及时排查相应从属服务器的问题。本发明技术方案的优点主要体现在可以有效解决单机搜索性能差的问题、索引个别出错问题。同时,通过多个服务器的相互合作,能够有效进行扩展。更为重要的是,在索引数据量增大时,索引维护不会出现过多消耗服务器性能的缺陷,确保搜索不受影响。


本发明的目的、优点和特点,将通过下面优选实施例的非限制性说明进行图示和解释。这些实施例仅是应用本发明技术方案的典型范例,凡采取等同替换或者等效变换而形成的技术方案,均落在本发明要求保护的范围之内。这些附图当中,图I是采用本基于Lucene的分布式搜索方法的配置实施示意图。图中各附图标记的含义如下 I索引主机2从属服务器3备份服务器4搜索主机
具体实施例方式如图I所示的基于Lucene的分布式搜索方法,其特别之处在于包括有索引步骤与搜索步骤。具体来说,本发明所采用的索引步骤为首先,通过至少一台建立索引的索引主机I (MasterIndex),与至少两台从属服务器2通过分布式文件系统(Hadoop DistributedFile System,简称HDFS)方式结合。之后,索引主机I不存储的索引内容均存储在从属服务器2上,每次新建更新索引时,由索引主机I计算每台从属服务器2需要建立哪部分索引,然后将任务分发给每台从属服务器2。接着,从属服务器2在对应的数据源中获取对应的数据将其建成索引,且执行完后将索引情况汇报给索引主机I。在此期间,采用去重过程,每台从属服务器2根据索引主机I分发的去重算法独自去重,去重完后再由索引主机I进行多个从属服务器2的去重。同时,如果上述过程中建成索引失败,则索引主机I再次发送重建命令给相应的从属服务器2。并且,索引全部建完后索引主机I通知搜索主机4索引有更新,然后搜索主机4重加载索引。同时,在整个索引步骤中,索引主机I根据备份策略将从属服务器2上的索引备份到对应的备份服务器3上。进一步来看,本发明所采用的所述的搜索流程为首先,由至少一台搜索主机4 (MasterSearch)和至少两台从属服务器2组成搜索引擎。当然,考虑到整体搜索的便捷,在后续使用过程中也可以扩展为多台搜索主机4。从属服务器2开放远程方法调用(RemoteMethod Invocation, RMI)搜索接口,搜索主机4通过远程方法调用搜索接口和从属服务器2进行连接。之后,当用户进行查询时,搜索主机4根据索引分布式策略判断出相应的索引数据存在哪些从属服务器2上,然后发送给相应从属服务器2查询命令。接着,从属服务器2进行并发查询,并将结果返回给搜索主机4,搜索主机4将结果进行规约,然后将结果返回给用户。就本发明一较佳的实施方式来看,本发明采用的索引分布式策略中索引可以水平切分,比如某北京、上海的索引放在一个从属服务器2上,香港、广州的索引放在另一个从属服务器2上。再进一步来看,在搜索步骤中,搜索主机4定时对从属服务器2进行是否能正常查询的检测,既心跳检测。再者,考虑到这个搜索的延续性不被破坏,搜索步骤中,当某个从属服务器2无法连接或服务器断电时,搜索主机4会尝试在从属服务器2对应的备份服务器3上搜索。并且,当从属服务器2和对应的备份服务器3都不能搜索时,搜索主机4会屏蔽相应的从属服务器2搜索,返回其他从属服务器2搜索到的数据,避免某个从属服务器2无法连接时影响整体搜索功能。发送报警信息给管理员以及时排查相应从属服务器2的问题。结合本发明的实际使用情况来看,当用户查询“北京的酒店”,搜索主机4根据索引分布式策略判断出北京的索引数据存在一号从属服务器2(Slaverl)上,然后从属服务器2 (Slaverl)查询后将数据返回给搜索主机4,搜索主机4计算后再返回给用户。 通过上述的文字表述可以看出,采用本发明后,可以有效解决单机搜索性能差的问题、索引个别出错问题。同时,通过多个服务器的相互合作,能够有效进行扩展。更为重要的是,在索引数据量增大时,索引维护不会出现过多消耗服务器性能的缺陷,确保搜索不受影响。
权利要求
1.基于Lucene的分布式搜索方法,其特征在于包括有索引步骤与搜索步骤; 所述的索引步骤为,步骤①,通过至少一台建立索引的索引主机,与至少两台从属服务器通过分布式文件系统方式结合; 步骤②,索引主机不存储的索引内容均存储在从属服务器上,每次新建更新索引时,由索引主机计算每台从属服务器需要建立哪部分索引,然后将任务分发给每台从属服务器;步骤③,从属服务器在对应的数据源中获取对应的数据将其建成索引,且执行完后将索引情况汇报给索引主机; 步骤④,如果步骤③建成索引失败,则索引主机再次发送重建命令给相应的从属服务器; 所述的搜索流程为,步骤①,由至少一台搜索主机和至少两台从属服务器组成搜索引擎;从属服务器开放远程方法调用搜索接口,搜索主机通过远程方法调用搜索接口和从属服务器进行连接。
步骤②,当用户进行查询时,搜索主机根据索引分布式策略判断出相应的索引数据存在哪些从属服务器上,然后发送给相应从属服务器查询命令; 步骤③,从属服务器进行并发查询,并将结果返回给搜索主机,搜索主机将结果进行规约,然后将结果返回给用户。
2.根据权利要求I所述的基于Lucene的分布式搜索方法,其特征在于所述索引步骤的步骤③中采用去重过程,每台从属服务器根据索引主机分发的去重算法独自去重,去重完后再由索引主机进行多个从属服务器的去重。
3.根据权利要求I所述的基于Lucene的分布式搜索方法,其特征在于所述索引步骤的步骤④中,索引全部建完后索引主机通知搜索主机索引有更新,然后搜索主机重加载索引。
4.根据权利要求I所述的基于Lucene的分布式搜索方法,其特征在于所述索引步骤中,索引主机根据备份策略将从属服务器上的索引备份到对应的备份服务器上。
5.根据权利要求I所述的基于Lucene的分布式搜索方法,其特征在于所述的搜索步骤中,搜索主机定时对从属服务器进行是否能正常查询的检测。
6.根据权利要求I所述的基于Lucene的分布式搜索方法,其特征在于所述的搜索步骤中,当某个从属服务器无法连接或服务器断电时,搜索主机会尝试在从属服务器对应的备份服务器上搜索。
7.根据权利要求6所述的基于Lucene的分布式搜索方法,其特征在于所述的基于Lucene的分布式搜索方法,其特征在于所述的搜索步骤中,当从属服务器和对应的备份服务器都不能搜索时,搜索主机会屏蔽相应的从属服务器搜索,返回其他从属服务器搜索到的数据,发送报警信息给管理员以及时排查相应从属服务器的问题。
全文摘要
本发明涉及一种基于Lucene的分布式搜索方法,其特点是包括有索引步骤与搜索步骤;所述的索引步骤为通过至少一台建立索引的索引主机,与至少两台从属服务器通过分布式文件系统方式结合;所述的搜索流程,由至少一台搜索主机和至少两台从属服务器组成搜索引擎。由此,可以有效解决单机搜索性能差的问题、索引个别出错问题。同时,通过多个服务器的相互合作,能够有效进行扩展。更为重要的是,在索引数据量增大时,索引维护不会出现过多消耗服务器性能的缺陷,确保搜索不受影响。
文档编号G06F17/30GK102779134SQ20111012263
公开日2012年11月14日 申请日期2011年5月12日 优先权日2011年5月12日
发明者吴剑, 吴志祥, 庞绍进, 张海龙, 王专, 王晓钟, 郭凤林, 马和平 申请人:苏州同程旅游网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1