论坛首页 Java企业应用论坛

我做的lucene性能测试,以及对其搜索速度的疑问,望高手指点

浏览 10823 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-07-26  
lishuaibt 写道
# TopDocs tdoc = searcher.search(query, 100); 
#             for (ScoreDoc scoreDoc : tdoc.scoreDocs) { 
#                 Document doc = searcher.doc(scoreDoc.doc); 
#             } 
#             searcher.close(); 
#             indexFSDir.close();

IndexReader的open操作是比较耗时的操作,如果没有索引的变更,是没有必要这么频繁的close()后重新open的,重用IndexReader对象,会减少很所不必要的重复加载,比如SegementInfo的加载等操作。。。。


我不是用的for,从代码可看出。

当每次索引后立即执行搜索方法,则搜索时间短。而如果将索引方法注释在执行main时,搜索方法用时长。你说indexReader每次打开操作比较耗时,但我每次都是同样的打开关闭,时间应在相同的一个范围内,而不会相差这么远啦。

为什么第一次执行速度明显比后面的快很多呢?我执行了十几次都是这样的。
0 请登录后投票
   发表时间:2010-07-26  
不清楚楼主的测试。我把你的代码拷贝下来再公司里的机器测试。先把那两个文件夹建立好。然后按你说的运行。相差不过几十毫秒
0 请登录后投票
   发表时间:2010-07-26  
yangfuchao418 写道
不清楚楼主的测试。我把你的代码拷贝下来再公司里的机器测试。先把那两个文件夹建立好。然后按你说的运行。相差不过几十毫秒

?很神奇呀。
0 请登录后投票
   发表时间:2010-07-27  
难道是IO缓存? 操作系统的Cache。。
0 请登录后投票
   发表时间:2010-07-27  
我也想用在自己的项目中,测试过,速度很快的,上G的还没测试过,晚上回去试试,明天再跟贴!
0 请登录后投票
   发表时间:2010-07-27  
个人感觉不要去太追求速度了,lucene是一个很成熟的解决方案,给我们应用开发提供了很多方便。可以用jprofiler去跑一下程序,看看性能参数。搜索的话可以用缓存加以优化(例如enhcache或memcached等)提高查询速度等。
0 请登录后投票
   发表时间:2010-08-04  
应该还是没有使用好lucene,不会这么慢的。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics