`

拨乱反正:“通过RAMDirectory缓写提高性能”是错误的!

阅读更多

错误有二:

其一:程序错误,ramwriter的关闭时机有问题,应在合并之前关闭。

FSDirectory fsDir = FSDirectory.getDirectory("/data/index", true);
RAMDirectory ramDir = new RAMDirectory();
IndexWriter fsWriter = new IndexWriter(fsDir, new StandardAnalyzer(), true);
IndexWriter ramWriter = new IndexWriter(ramDir, new StandardAnalyzer(), true);
while (there are documents to index)
{
... create Document ...
ramWriter.addDocument(doc);
if (condition for flushing memory to disk has been met)
{
fsWriter.addIndexes(new Directory[] { ramDir });
ramWriter.close();//这一行位置错误,应移到上一行的上面
ramWriter = new IndexWriter(ramDir, new StandardAnalyzer(), true);
}
}

 




其二:这样并不能提高性能,反而会更慢。

测试数据如下:
文件系统现有文件大小            内存索引大小        lucene版本    用时       
767M            <1k        2.2    272203    134250   
770K                        297    391                           

2.4-1.4G                    2.4.1    164781    66938    67578


2.4版本的确比2.2的快一倍。

而如果直接写入文件系统,1.5G的现有索引文件,写入一条document只需要31ms。

分享到:
评论

相关推荐

    lucene2.9.1所有最新开发包及源码及文档

    //关闭索引写出器,此时才把索引写到目标存储地 2) Directory: 索引存放地。 a) 文件系统:FSDirectory: FSDirectory.open(File file); b) 内存RAMDirectory: new RAMDirectory(); 3) Analyzer: 分词器。 a...

    RAMDirectoryTest用于统计lucene字符在文档中出现次数

    RAMDirectoryTest用于统计lucene字符在文档中出现次数

    lucene.net搜索技术,附带学习资料

    性能优化也很重要,因为如果要索引的文件比较大的话,建立索引的性能就会很大的下降,你可以调整IndexWriter的几个参数来优化索引性能,还有可以用IndexWriter.Optimize()方法(这个方法主要是优化查询速度,反而使...

    中文分词工具word-1.0,Java实现的中文分词组件多种基于词典的分词算法

    可以通过系统属性或配置文件的方式来指定路径,多个路径之间用逗号分隔开 类路径下的词典文件,需要在相对路径前加入前缀classpath: 指定方式有三种: 指定方式一,编程指定(高优先级): WordConfTools.set(...

    lucene,lucene教程,lucene讲解

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

    Lucene 详细教案

    1 、 new IndexWriter(new RAMDirectory(), new StandardAnalyzer(), true); 在内存中建立索引,速度最快但是耗资源,而且重启就没了。 2 、 new IndexWriter(FSDirectory.getDirectory(path, true), new ...

    Lucene中文分词组件 JE-Analysis 1.4.0

    修正细粒度分词错误的问题 1.3.1 —— 2006-06-23 修正在某些情况下分词遗漏的问题 1.3 —— 2006-06-22 实现了词尾消歧算法中第一层的过滤 增加日期时间的匹配 1.2.2 —— 2006-06-13 完善了中...

    lucene对数组做全文检索

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

Global site tag (gtag.js) - Google Analytics