Lucene 3.4 索引速度为什么没有2.3快

PRINTLNER 2011-11-10 09:44:19
如题,建立索引时感觉3.4比2.3慢了好多,然后写了一段简单的代码试了一下。2.3需要641ms,而3.4却用了1563ms,不可思议啊,按理说3.4比2.3快好多才对吧..不知道问题出哪儿了,求解答~~

//2.3的代码
public static void main(String args[]) throws Exception{
long a=System.currentTimeMillis();
IndexWriter writer=new IndexWriter("index", new KeywordAnalyzer(),true);
writer.setMergeFactor(1024);
Document doc=null;
for(int i=0;i<50000;i++){
doc=new Document();
doc.add(new Field("id","wo"+i,Field.Store.YES,Field.Index.TOKENIZED));
doc.add(new Field("lon","123.1111",Field.Store.YES,Field.Index.TOKENIZED));
writer.addDocument(doc);
}
writer.optimize();
writer.close();
long b=System.currentTimeMillis();
System.out.println("time:"+(b-a)+"ms");
}




//3.4代码
public static void main(String args[]) throws Exception{
long a=System.currentTimeMillis();
Directory dir=FSDirectory.open(new File("index"));
IndexWriterConfig conf=new IndexWriterConfig(Version.LUCENE_34, new KeywordAnalyzer());
conf.setOpenMode(OpenMode.CREATE);
LogByteSizeMergePolicy mp=new LogByteSizeMergePolicy();
mp.setMergeFactor(1024);
conf.setMergePolicy(mp);
IndexWriter writer=new IndexWriter(dir, conf);
Document doc=null;
for(int i=0;i<50000;i++){
doc=new Document();
doc.add(new Field("id","wo"+i,Field.Store.YES,Field.Index.ANALYZED));
doc.add(new NumericField("lon",Field.Store.YES, true).setDoubleValue(123.1111));
writer.addDocument(doc);
}
writer.optimize();
writer.close();
long b=System.currentTimeMillis();
System.out.println("time:"+(b-a)+"ms");
}
...全文
138 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
PRINTLNER 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yaogang_xidian 的回复:]

Lucene3为了更加方便和有针对性,把对IndexWriter配置操作,单独放置到IndexWriterConfig类中来完成,这是一个的独立的类,把原Lucene2中通过构造函数来实现配置的操作,独立出来,单独设置了一个类即IndexWriterConfig来实现。从实际开发角度来讲,是方便了程序的开发,并且代码的组织会更加明晰和合理。
当然,代价就是需要额外的时间。
这和定义了许多类,……
[/Quote]
这个,貌似不是这个原因吧,当数据量大的时候速度会更慢,按你的解释说不通的,不过还是谢谢
yaogang_xidian 2011-11-11
  • 打赏
  • 举报
回复
Lucene3为了更加方便和有针对性,把对IndexWriter配置操作,单独放置到IndexWriterConfig类中来完成,这是一个的独立的类,把原Lucene2中通过构造函数来实现配置的操作,独立出来,单独设置了一个类即IndexWriterConfig来实现。从实际开发角度来讲,是方便了程序的开发,并且代码的组织会更加明晰和合理。
当然,代价就是需要额外的时间。
这和定义了许多类,这些类存放在不同的包下,和我把所有的操作放在同一个包中的同一个类中来完成是一样的。定义在不同的包中,显然便于维护,代码的组织也比较合理,可读性比较高(尤其代码达到几千、几万行的时候),但从编译到执行所需要的时间肯定要比单个类中定义执行所花费的时间要长。
PRINTLNER 2011-11-10
  • 打赏
  • 举报
回复
怎么没人呢....
内容概要:本文系统介绍了基于MATLAB平台的风力涡轮机雷达信号仿真研究,涵盖完整的仿真代码、实测数据及配套学术文章,重点实现雷达信号处理、风力涡轮机回波建模、微动特征提取与时频分析等核心技术。通过高精度模拟风机叶片旋转引起的调制效应与雷达散射截面变化,深入揭示风力发电场对周边雷达系统造成的电磁干扰机制,为雷达杂波抑制、目标检测优化及空域兼容性设计提供理论支撑与技术验证平台。资源内容还可拓展应用于无人机路径规划、电动汽车调度、电力系统优化等交叉领域,展现MATLAB在复杂系统仿真中的强大集成能力。; 适合人群:具备MATLAB编程基础与雷达信号处理知识的科研人员,适用于从事新能源并网影响评估、雷达系统设计、电磁兼容分析、智能电网或远程 sensing 领域研究的研究生、工程师及高校教师; 使用场景及目标:①开展风电场对空中监视雷达干扰效应的仿真评估;②研究风电杂波的时频特性与微多普勒特征建模方法;③开发针对非合作目标干扰的雷达抗干扰算法与信号分离技术;④作为科研项目申报、论文复现或工程预研的技术原型工具包; 阅读建议:建议结合百度网盘提供的完整资料包(含代码、数据集与参考文献)同步学习,优先运行示例脚本以掌握仿真流程,再根据具体研究需求调整系统参数进行扩展实验,同时可借鉴文中提到的其他MATLAB仿真案例以提升研究深度与广度。

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧