我怎样才能获得lucene搜索字符串的确切时间。 我想展示这样的东西:
关于x
会产生xx
秒。
我怎样才能得到确切的时间?这是他们在lucene库下的任何实用程序吗? 或者我是否需要自己计算?
编辑: 假设它们在lucene核心库下没有效用:
这是一个搜索代码:
TopScoreDocCollector collector = TopScoreDocCollector.create(100, true);
is.search(query, collector);
hits = collector.topDocs().scoreDocs;
我怎样才能获得准确的搜索时间(我应该用计时器包裹哪一行)?
再编辑一次:我试过了这个:
long t1 = System.currentTimeMillis();
is.search(query, collector);
hits = collector.topDocs().scoreDocs;
long t2 = System.currentTimeMillis();
Long time = (t2-t1);
System.out.println("time : " + time);
我在每次搜索时都会在控制台上获得time : 0
。
这是否意味着...... Lucene在搜索中没有时间? (我的索引中只有100个文档)
还有一个:尝试了这个;
long start = System.nanoTime();
is.search(query, collector);
hits = collector.topDocs().scoreDocs;
long end = System.nanoTime();
long time = (end - start) / 1000;
打印:
time : 10261
time : 12285
time : 14513
time : 1309
答案 0 :(得分:2)
在Lucene中搜索对不同的人来说意味着不同的东西。例如。只是搜索(indexSearcher.search(...)
)VS搜索+迭代所有文档(或只是一页文档)。或VS没有排序。它可能只会给已经复杂的API增加不必要的混乱。
使用时间测量代码包装您的搜索调用非常简单。顺便说一句,请考虑使用guava's Stopwatch或任何其他类似工具,而不是System.currentTime*
。