`
yanlijun250
  • 浏览: 751546 次
文章分类
社区版块
存档分类
最新评论

Lucene RAMDirectory 慎用

 
阅读更多

今天一哥们在做一个程序的时候使用了Lucene做全文检索工具,但是遇到了一个问题:首先就是检索速度非常的慢,而且只要连续检索三四次,程序马上就荡掉。通过日志发现是在CharacterEncodingFilter处报的错,没有办法只能去看filter的源代码。filter的程序很简单,只是做了request,response的编码,问题不可能出在这里啊!但是日志显示的错误信息就是从这个filter产生的,怎么回事?再看一下代码,晕:

try

{

// some code here

}

catch(Exception e)

{

//exception handling here

}

Exception太宽把底层错误屏蔽掉了,什么有价值的都看不到啊!把Exception改成IOException再试。Good 这次错误终于显示出来了:OutOfMemoryErr: Heap space

原来是内存耗尽了,好说!开始看代码中那些地方把内存吃掉了,改了一些地方(有个函数狂作字符串 +,改用StringBuffer,另外把一些循环中声明对象改为在循环开始...),重新启动服务器,这回应该没有问题了吧!OutOfMemoryErr: Heap space,日,怎么还是这个错误,再看...

终于找到了这块代码RAMDirectory ramDir = new RAMDirectory(fileName),不会是这里把内存都吃掉了吧!把这句注释掉,直接用文件方式,重起,测试,没有问题了!!!!!

看来这个RAMDirectory 是把整个索引文件的内容都放到内存中了,怪不得内存那么快就耗尽了。本来希望把文件放到内存中希望查询能快一点,没想到速度没加快反而找了不少麻烦!

仔细考虑了一下,要想使用RAMDirectory 把索引文件放到内存中不能每次查询时都重新打开RAMDirectory 。解决这个问题最好使用一个Singleton,在系统启动时把索引读到内存,查询时就直接使用。

本来是一个小问题,可是好长时间才解决,看来是经验不足,还需要锻炼!

分享到:
评论

相关推荐

    Lucene3.0 使 用 教 程

    Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 ...

    lucene,lucene教程,lucene讲解

    第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。 public void add(Query query, BooleanClause.Occur occur) BooleanClause用于表示布尔查询子句关系的类,包括: BooleanClause.Occur.MUST,...

    lucene讲义 叫你用lucene算法

    lucene学习教程lucene讲义 叫你用lucene算法

    lucene实例lucene实例

    lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例

    lucene3.0 lucene3.0

    lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0

    lucene学习lucene学习

    lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习...

    Lucene3.0特性,Lucene3.0特性

    Lucene3.0特性Lucene3.0特性

    lucene对数组做全文检索

    使用lucene对字符串数组在内存建立索引 并检索

    lucene-core-7.7.0-API文档-中文版.zip

    赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene...

    Lucene4.X第九讲-Lucene搜索深入实战

    Lucene是用java实现的、成熟的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于Apache软件许可 [ASF, License]。同样,Lucene是当前非常流行的、免费的Java信息搜索(IR)库。 面对已经存在的商业全文检索引擎...

    lucene.NET 中文分词

    lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮

    lucene3源码分析

    lucene3源码分析

    lucene-core-7.2.1-API文档-中文版.zip

    赠送jar包:lucene-core-7.2.1.jar; 赠送原API文档:lucene-core-7.2.1-javadoc.jar; 赠送源代码:lucene-core-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.2.1.pom; 包含翻译后的API文档:lucene...

    lucene 对 xml建立索引

    lucene 对 xml建立索引 建立索引就是怎么简单 呵呵

    Annotated Lucene 中文版 Lucene源码剖析

    Annotated Lucene 中文版 Lucene源码剖析

    lucene4.2 jar包

    lucene-analyzers-common-4.2.0.jar; lucene-analyzers-kuromoji-4.2.0.jar; lucene-analyzers-phonetic-4.2.0.jar; lucene-codecs-4.2.0.jar; lucene-core-4.2.0.jar; lucene-grouping-4.2.0.jar; lucene-...

    Lucene实战

    《Lucene实战(第2版)》基于Apache的Lucene 3.0,从Lucene核心、Lucene应用、案例分析3个方面详细系统地介绍了Lucene,包括认识Lucene、建立索引、为应用程序添加搜索功能、高级搜索技术、扩展搜索、使用Tika提取文本...

    lucene6.6jar包

    lucene

Global site tag (gtag.js) - Google Analytics