计算lucene搜索的时间

时间:2012-07-29 19:24:26

标签: java time lucene

我怎样才能获得lucene搜索字符串的确切时间。 我想展示这样的东西: enter image description here

关于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

1 个答案:

答案 0 :(得分:2)

在Lucene中搜索对不同的人来说意味着不同的东西。例如。只是搜索(indexSearcher.search(...))VS搜索+迭代所有文档(或只是一页文档)。或VS没有排序。它可能只会给已经复杂的API增加不必要的混乱。

使用时间测量代码包装您的搜索调用非常简单。顺便说一句,请考虑使用guava's Stopwatch或任何其他类似工具,而不是System.currentTime*