3

我怎样才能得到 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
4

1 回答 1

2

在 Lucene 中搜索对不同的人可能意味着不同的事情。例如,仅搜索 ( indexSearcher.search(...)) VS 搜索 + 遍历所有文档(或仅一页文档)。或者使用 VS 不排序。它可能只会给已经很复杂的 API 添加不必要的混乱。

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

于 2012-07-30T11:38:11.350 回答