3

lucene が文字列を検索するのにかかった正確な時間を取得するにはどうすればよいですか。私はこのようなものを見せたかった: ここに画像の説明を入力

約数秒xで結果が得られます。xx

どうすれば正確な時間を取得できますか? このための lucene ライブラリの下のユーティリティはありますか? それとも自分でこれを計算する必要がありますか?

EDIT: luceneコアライブラリの下では、これに対するユーティリティではないと仮定します:

これは検索コードです:

TopScoreDocCollector collector = TopScoreDocCollector.create(100, true);
            is.search(query, collector);
            hits = collector.topDocs().scoreDocs;

検索の正確な時間を取得するにはどうすればよいですか (タイマーでどの行を折り返す必要がありますか)?

もう1つの編集: 私はこれを試しました:

        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 個のドキュメントしかありません)

そしてもう1つ:これを 試しました。

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 に不必要な混乱を追加する可能性があります。

検索呼び出しを時間測定コードでラップするのは非常に簡単です。ちなみに、 代わりにguava の Stopwatchやその他の同様のツールを使用することを検討してSystem.currentTime*ください。

于 2012-07-30T11:38:11.350 に答える