分布式存储搜索一体化海量数据引擎采用SF1RLicense2

优采云 发布时间: 2021-06-04 04:18

  分布式存储搜索一体化海量数据引擎采用SF1RLicense2

  什么是SF1R

  SF1R是分布式存储搜索集成海量数据引擎。 SF1R来自iZENECloud团队多年的研发成果,经受住了商用网站的严峻考验。 2014年iZENECloud团队向社区开放SF1R,采用Apache License 2,希望共同改进和维护。

  注意

  SF1R的全称是Search Formula 1 Revolution,SF1R是iZENECloud团队用于搜索引擎项目的内部代码。

  SF1R的历史和特点

  SF1R 是一个已经存在多年的项目。它完全基于 C++ 语言开发。最新的master分支已经可以用C++11编译了。SF1R在早期的开发中,参考了流行的Lucene索引设计,做了一些改进,包括实时索引和更好的压缩方法,如PForDelta和NewPFor。但是在使用过程中,我们发现Lucene这个完全基于文件的索引,在处理高并发和低延迟方面没有优势。鉴于大部分大型搜索引擎的索引都是完全放在内存中的,iZENECloud团队加入了SF1R两个索引,赞比西和后缀是业界最好的设计,大大提升了SF1R的性能,后面会单独提到在不断根据需要调整SF1R的过程中,iZENECloud团队为SF1R增加了很*敏*感*词*,包括各种数据挖掘功能,集成推荐引擎,使其成为一个庞大的搜索、存储、推荐、挖掘集成引擎。该项目因此变得臃肿。因此,2014年iZENECloud团队针对SF1R旧版本做了大量剪裁,去掉了项目中不必要的数据挖掘和推荐引擎,只留下搜索和存储。这是 SF1R-Lite 项目。有兴趣的朋友可以从提交历史中恢复这些剪辑。

  为什么使用SF1R

  目前社区中大部分应用都采用了Lucene,以及Solr、ElasticSearch等一系列基于Lucene的搜索方案。这些搜索方案已经被很多人改进了十多年,在泛化方面已经非常出色。那么基于此,为什么要采用新的搜索方案呢?造成这种情况的原因有3个: 首先,基于Java的搜索方案,面对高压场景,由于GC的存在,经常会出现延迟抖动。在实际应用中,SF1R可以运行所有CPU(如16核)。 ), 7*24 无间断运行,无上述抖动;其次,SF1R使用的两个内存指标的性能都远高于常规方案,可以更好地满足对性能要求高的应用。在实际应用中,SF1R一旦在单个节点上部署并索引了数亿文档,仍然提供快速响应;第三,SF1R是一个完整的服务器端引擎,可以轻松扩展索引等功能。与Lucene社区庞大的代码仓库相比,SF1R的项目更加精简,因此更容易修改和维护特定场景。这可以从SF1R支持的三种索引结构中看出。此外,SF1R还可用于广告检索。方便扩展第四个索引,这是传统搜索方案Lucene所没有的。

  赞比西指数

  赞比西指数来自赞比西项目。索引的原理可以参考相关论文。这是传统倒排索引结构中最好的设计之一,因为它可以在不损失查询性能的情况下提供实时搜索功能,因此非常适合作为推特或微博搜索服务。在将Zambezi引入SF1R的过程中,iZENECloud团队进行了多项改进,包括:原创Zambezi索引完全针对Twitter查询服务。因此,对于不常见的词(比如出现在少于128个文档中),原创设计已经被修剪,无法在索引中搜索。 iZENECloud 团队的改进消除了这个限制;此外,iZENECloud团队还引入并改进了一些最新的索引压缩技术,例如SIMD交集,使其拥有最高速的解压方案。

  后缀索引

  后缀索引使用了罕见的 Succinct Self Index 结构。基础结构是后缀数组和小波树。它的结构与倒排索引完全不同。相关原理请参考SF1R技术报告。后缀索引的查询性能远高于传统索引。缺点是它们在构建时占用大量内存,不能支持增量。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线