`
sharp-fcc
  • 浏览: 111494 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

lucene 存储,访问小技巧

阅读更多

lucene为了能够是信息存储的空间更小,访问速度更快,用了一些小技巧,下面介绍一些技巧:

1.  Prefix + Suffix 

在保存Term Dictionary的时候,会保存几乎所有的词,这样索引文件会非常大,当某个词跟前面一个词拥有相同前缀的时候,后面的词仅仅保存前缀在词中得偏移,以及除了前缀之外的字符串。

比如存储如下几个词: term,  termagancy,  termagant, terminal .

按照正常的方法来存储,需要 4 + 10 + 9 + 8 = 29.

如果使用这个技巧, termagancy 被存储成  [4][a][g][a][n][c][y]  这样算下来一共使用了 4 + 7 + 2 + 5 = 18. 



 

节省了  11 个char 的存储空间。

 

2.  Delta   

在lucene中需要保存很多整型的信息, 比如文档的id, Term的位置信息,当文档渐渐变多的时候,这些数字会越来越大,所占用的Byte也越来越多,Delta的意思就是两个整数,仅仅保存两个整数的差值.

比如:  5  9  11  存储为   5  4   2  

 

3.    markbit

某个值a后面可能存在b,也可能不存在, 需要一个标志位来表示是否存在b。

在lucene 中把a的值左移一位,空出最后一位作为标志位,表示后面是否跟随b,在这种情况下,a/2才是真正的值。

 

4.   skip list

为了提高查询速度,lucene中有很多地方都是用了这种数据结构。

skip list 具有如下的特征:

1.  元素是按书序排列的,比如字母序或者从小到大。

2.  跳跃表是有间隔的,间隔是事先配置好的。

3.  跳跃表是有层次的,每一层指定间隔的元素构成上一层。

lucene中得定义:

间隔: 上层两个元素之差,再加一。

层数: 不包括原来链表层, 上面的层从0来时累加。

跳跃表比顺序查询,大大调高了搜索的效率.



 

比如查找元素72,应用跳表之后只需要访问第一层的50 ,然后发现50后面没有元素,然后访问第二层的94,然后访问原链表,找到72 ,只要访问3个元素即可。

 

  • 大小: 126.3 KB
  • 大小: 11.1 KB
0
0
分享到:
评论

相关推荐

    Lucene实战(第2版)

    它不仅介绍了Lucene的基本知识和使用技巧,还深入探讨了其实现原理和技术细节,为读者提供了一个全面而深入的学习资源。无论你是新手还是有经验的开发者,这本书都能够帮助你更好地掌握Lucene,从而在实际工作中发挥...

    Lucene in Action 2nd Edition 英文版

    - **Lucene 的架构设计**:本书详细介绍了 Lucene 的核心架构,包括索引结构、存储机制以及查询处理流程。通过对这些基础概念的深入了解,读者可以更好地理解 Lucene 如何高效地进行文本搜索。 - **API 示例代码**...

    Lucene+3.0+原理与代码分析.pdf

    - **索引存储**:将构建好的索引以一定格式存储起来,便于后续查询时快速访问。 - **查询处理**:根据用户的查询请求,在索引中查找匹配项,返回相关结果。 3. **索引文件格式**: - 该部分详细介绍了Lucene 3.0...

    文档管理系统

    对于初学者或开发者而言,这是一个很好的学习资源,可以深入了解C#和Winform在实际项目中的应用,以及文档管理系统的设计思路和实现技巧。同时,源码的交流和分享也是IT社区的重要组成部分,有助于技术的传播和进步...

    hadoop入门指南.pdf

    - **Lucene**: 高性能全文搜索引擎库,虽然不是Hadoop的一部分,但经常与Hadoop结合使用。 - **Hive**: 数据仓库工具,提供SQL-like查询语言(HQL),简化了非程序员对Hadoop数据的操作。 - **Pig**: 高级数据分析工具...

    ASP.NET多语种网络硬盘系统的设计(源代码+论文).zip

    在ASP.NET中,开发人员可以用C#或VB.NET等编程语言编写代码,并且可以利用.NET Framework提供的各种服务,如数据访问、安全性、缓存等。 在这个多语种网络硬盘系统中,开发者可能使用了ASP.NET MVC(Model-View-...

    Solr6.2官方版参考手册

    - **管理界面**: 通过浏览器访问 Solr 提供的 Web 基础管理界面,可以进行配置文件查看、查询提交、日志设置、Java 环境设置等一系列操作。 - **分布式配置管理**: 介绍如何通过管理界面监控和控制分布式 Solr 配置...

    自己动手写网络爬虫(基本全)

    - **全文索引结构(Full-text Indexing Structure):** 存储和组织抓取的文档,以便快速检索。 - **Lucene全文检索引擎:** 是一个高性能的开源全文检索库。 - **Nutch网络搜索软件:** 基于Hadoop的一个高度可...

    兄弟连lamp高级

    - 全文检索:Sphinx、Lucene等。 #### 六、项目管理技巧 - **项目分类**:日常支持性工作、长期项目研发、底层研发等。 - **敏捷开发**:快速迭代、持续集成、每日站立会议等。 - **团队构成**:业务专家、项目...

    OpenCMS教程

    - **内容发布**:将存储在数据库中的内容发布到Web服务器上供访问者查看; - **内容检索**:为用户提供搜索功能,便于查找所需信息。 **1.5 OpenCMS介绍** OpenCMS是一款开源的内容管理系统,它基于Java语言开发,...

    solr6.5英文版操作说明文档

    - **过滤器功能**:过滤器进一步处理这些词汇单元,例如去除停用词或转换词汇单元的大小写。 - **自定义分析器**:Solr 允许用户根据需求定制自己的分析器链,从而更好地匹配特定的应用场景。 #### 八、Solr 性能...

    面试点总结.zip各种面试题

    缓存是一种提高系统性能的技术,通过将常用数据存储在内存中,减少对硬盘或网络资源的访问。Java中常见的缓存实现有Guava Cache和Spring Cache。面试时可能会考察如何设计缓存策略、缓存穿透、缓存雪崩和缓存更新...

    ASP某小型数字图书馆的设计与实现(源代码+论文).zip

    1. **数据库设计**:数字图书馆的核心是其数据库,它存储着各种电子资源的信息,如书名、作者、出版社、出版日期、分类等。数据库设计通常包括概念设计、逻辑设计和物理设计,可能使用如SQL Server或MySQL等关系型...

    Elasticsearch顶尖高手系列课程-核心知识篇+高手进阶篇(免费无加密)

    Elasticsearch是一款基于Lucene的分布式、RESTful风格的搜索和数据分析引擎。它能够解决海量数据下的搜索问题,并且支持多种数据类型,如文本、数字、日期等。由于其高度可扩展性、高可用性和强大的搜索能力,...

    开源企业搜索引擎SOLR的应用教程

    ### 开源企业搜索引擎SOLR的应用教程 #### 一、概述 Apache Solr 是一个功能强大的开源搜索服务器,...通过深入理解Solr的工作原理、配置方法和使用技巧,开发者可以充分发挥其潜力,为企业提供高效、可靠的搜索服务。

    apache.solr.4.cookbook

    Apache Solr是一个高性能、可伸缩的开源搜索平台,基于Apache Lucene开发。它提供了企业级的全文搜索功能,包括自动完成、拼写检查、高亮显示和地理空间搜索等高级特性。Solr支持多种数据源,并能够处理大规模数据集...

    高性能高并发服务器架构大全

     大型数据库的设计与编程技巧 本人最近开发一个访问统计系统,日志非常的大,都保存在数据库里面。 我现在按照常规的设计方法对表进行设计,已经出现了查询非常缓慢地情形。 大家对于这种情况如何来设计数据库呢?...

Global site tag (gtag.js) - Google Analytics