2012-07-29 3 views
3

lucene이 문자열을 검색하는 정확한 시간을 어떻게 알 수 있습니까? xx초에 enter image description herelucene 검색 시간 계산

소개 x 결과 : 나는 이런 식으로 뭔가를 보여주고 싶었다.

어떻게 정확한 시간을 얻을 수 있습니까? 이것에 대한 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

검색을 수행하는 호출 주위로 타이머를 감싸기 만하면됩니다. – adrianbanks

+0

의미 .. 루씬 코어에서 사용할 수없는 유틸리티 ?? – JAVAGeek

+1

100 개의 문서가 매우 작습니다. 'System.nanoTime()'을 사용하려고 시도하십시오. – mishadoff

답변

2

루씬에서 검색은 다른 사람들에게 다른 것을 의미 할 수있다. 예 : 검색 (indexSearcher.search(...)) VS 검색 + 모든 문서 (또는 문서 한 페이지) 반복. 또는 정렬없이 VS로. 이미 복잡한 API에 불필요한 혼란을 가중시킬 가능성이 높습니다.

시간을 측정하는 코드로 검색 호출을 감싸는 것은 정말 간단합니다. 그런데 System.currentTime* 대신 guava's Stopwatch 또는 다른 유사한 도구를 사용하는 것이 좋습니다.