|
|
@@ -28,7 +28,6 @@ import org.apache.lucene.index.IndexWriter;
|
|
|
import org.apache.lucene.index.LeafReaderContext;
|
|
|
import org.apache.lucene.index.RandomIndexWriter;
|
|
|
import org.apache.lucene.index.Term;
|
|
|
-import org.apache.lucene.search.ConstantScoreQuery;
|
|
|
import org.apache.lucene.search.Explanation;
|
|
|
import org.apache.lucene.search.IndexSearcher;
|
|
|
import org.apache.lucene.search.LeafCollector;
|
|
|
@@ -120,209 +119,6 @@ public class QueryProfilerTests extends ESTestCase {
|
|
|
assertThat(rewriteTime, greaterThan(0L));
|
|
|
}
|
|
|
|
|
|
- public void testConstantScoreQuery() throws IOException {
|
|
|
- QueryProfiler profiler = new QueryProfiler();
|
|
|
- searcher.setProfiler(profiler);
|
|
|
- Query query = new ConstantScoreQuery(new TermQuery(new Term("foo", "bar")));
|
|
|
- searcher.search(query, 1);
|
|
|
- List<ProfileResult> results = profiler.getTree();
|
|
|
- assertEquals(1, results.size());
|
|
|
- Map<String, Long> breakdownConstantScoreQuery = results.get(0).getTimeBreakdown();
|
|
|
- assertEquals(1, results.get(0).getProfiledChildren().size());
|
|
|
- Map<String, Long> breakdownTermQuery = results.get(0).getProfiledChildren().get(0).getTimeBreakdown();
|
|
|
-
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.CREATE_WEIGHT.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.BUILD_SCORER.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.NEXT_DOC.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.ADVANCE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.SCORE.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.MATCH.toString()).longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.CREATE_WEIGHT.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.BUILD_SCORER.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.NEXT_DOC.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.ADVANCE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.SCORE.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.MATCH.toString() + "_count").longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.CREATE_WEIGHT.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.BUILD_SCORER.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.NEXT_DOC.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.ADVANCE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.SCORE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.MATCH.toString()).longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.CREATE_WEIGHT.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.BUILD_SCORER.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.NEXT_DOC.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.ADVANCE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.SCORE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.MATCH.toString() + "_count").longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertEquals(breakdownConstantScoreQuery.get(QueryTimingType.NEXT_DOC.toString()).longValue(),
|
|
|
- breakdownTermQuery.get(QueryTimingType.NEXT_DOC.toString()).longValue());
|
|
|
-
|
|
|
- long rewriteTime = profiler.getRewriteTime();
|
|
|
- assertThat(rewriteTime, greaterThan(0L));
|
|
|
- }
|
|
|
-
|
|
|
- public void testConstantScoreTotalHitsBeingCachedQuery() throws IOException {
|
|
|
- Query query = new ConstantScoreQuery(new TermQuery(new Term("foo", "bar")));
|
|
|
- //clean cache and make sure queries will be cached
|
|
|
- searcher.setQueryCache(IndexSearcher.getDefaultQueryCache());
|
|
|
- searcher.setQueryCachingPolicy(ALWAYS_CACHE_POLICY);
|
|
|
-
|
|
|
- QueryProfiler profiler = new QueryProfiler();
|
|
|
- searcher.setProfiler(profiler);
|
|
|
- TotalHitCountCollector collector = new TotalHitCountCollector();
|
|
|
- searcher.search(query, collector);
|
|
|
-
|
|
|
- List<ProfileResult> results = profiler.getTree();
|
|
|
- assertEquals(1, results.size());
|
|
|
- Map<String, Long> breakdownConstantScoreQuery = results.get(0).getTimeBreakdown();
|
|
|
- assertEquals(1, results.get(0).getProfiledChildren().size());
|
|
|
- Map<String, Long> breakdownTermQuery = results.get(0).getProfiledChildren().get(0).getTimeBreakdown();
|
|
|
- //In this case scorers for constant score query and term query are disconnected.
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.CREATE_WEIGHT.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.BUILD_SCORER.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.NEXT_DOC.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.ADVANCE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.SCORE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.MATCH.toString()).longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.CREATE_WEIGHT.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.BUILD_SCORER.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.NEXT_DOC.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.ADVANCE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.SCORE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.MATCH.toString() + "_count").longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.CREATE_WEIGHT.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.BUILD_SCORER.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.NEXT_DOC.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.ADVANCE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.SCORE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.MATCH.toString()).longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.CREATE_WEIGHT.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.BUILD_SCORER.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.NEXT_DOC.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.ADVANCE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.SCORE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.MATCH.toString() + "_count").longValue(), equalTo(0L));
|
|
|
-
|
|
|
- long rewriteTime = profiler.getRewriteTime();
|
|
|
- assertThat(rewriteTime, greaterThan(0L));
|
|
|
- }
|
|
|
-
|
|
|
- public void testConstantScoreTotalHitsNotCachedQuery() throws IOException {
|
|
|
- Query query = new ConstantScoreQuery(new TermQuery(new Term("foo", "bar")));
|
|
|
-
|
|
|
- //clean cache and make sure queries will not be cached
|
|
|
- searcher.setQueryCache(IndexSearcher.getDefaultQueryCache());
|
|
|
- searcher.setQueryCachingPolicy(NEVER_CACHE_POLICY);
|
|
|
-
|
|
|
- QueryProfiler profiler = new QueryProfiler();
|
|
|
- searcher.setProfiler(profiler);
|
|
|
- TotalHitCountCollector collector = new TotalHitCountCollector();
|
|
|
- searcher.search(query, collector);
|
|
|
-
|
|
|
- List<ProfileResult> results = profiler.getTree();
|
|
|
- assertEquals(1, results.size());
|
|
|
- Map<String, Long> breakdownConstantScoreQuery = results.get(0).getTimeBreakdown();
|
|
|
- assertEquals(1, results.get(0).getProfiledChildren().size());
|
|
|
- Map<String, Long> breakdownTermQuery = results.get(0).getProfiledChildren().get(0).getTimeBreakdown();
|
|
|
- //Timing from the scorer of term query are inherited by constant score query scorer.
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.CREATE_WEIGHT.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.BUILD_SCORER.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.NEXT_DOC.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.ADVANCE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.SCORE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.MATCH.toString()).longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.CREATE_WEIGHT.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.BUILD_SCORER.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.NEXT_DOC.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.ADVANCE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.SCORE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.MATCH.toString() + "_count").longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.BUILD_SCORER.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.NEXT_DOC.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.ADVANCE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.SCORE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.MATCH.toString()).longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.CREATE_WEIGHT.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.BUILD_SCORER.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.NEXT_DOC.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.ADVANCE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.SCORE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.MATCH.toString() + "_count").longValue(), equalTo(0L));
|
|
|
-
|
|
|
-
|
|
|
- assertEquals(breakdownConstantScoreQuery.get(QueryTimingType.NEXT_DOC.toString()).longValue(),
|
|
|
- breakdownTermQuery.get(QueryTimingType.NEXT_DOC.toString()).longValue());
|
|
|
-
|
|
|
-
|
|
|
- long rewriteTime = profiler.getRewriteTime();
|
|
|
- assertThat(rewriteTime, greaterThan(0L));
|
|
|
- }
|
|
|
-
|
|
|
- public void testConstantScoreTotalHitsCachedQuery() throws IOException {
|
|
|
- Query query = new ConstantScoreQuery(new TermQuery(new Term("foo", "bar")));
|
|
|
-
|
|
|
- //clean cache and make sure queries will be cached
|
|
|
- searcher.setQueryCache(IndexSearcher.getDefaultQueryCache());
|
|
|
- searcher.setQueryCachingPolicy(ALWAYS_CACHE_POLICY);
|
|
|
- //Put query on cache
|
|
|
- TotalHitCountCollector collector = new TotalHitCountCollector();
|
|
|
- searcher.search(query, collector);
|
|
|
-
|
|
|
- QueryProfiler profiler = new QueryProfiler();
|
|
|
- searcher.setProfiler(profiler);
|
|
|
- collector = new TotalHitCountCollector();
|
|
|
- searcher.search(query, collector);
|
|
|
-
|
|
|
- List<ProfileResult> results = profiler.getTree();
|
|
|
- assertEquals(1, results.size());
|
|
|
- Map<String, Long> breakdownConstantScoreQuery = results.get(0).getTimeBreakdown();
|
|
|
- assertEquals(1, results.get(0).getProfiledChildren().size());
|
|
|
- Map<String, Long> breakdownTermQuery = results.get(0).getProfiledChildren().get(0).getTimeBreakdown();
|
|
|
-
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.CREATE_WEIGHT.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.BUILD_SCORER.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.NEXT_DOC.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.ADVANCE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.SCORE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.MATCH.toString()).longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.CREATE_WEIGHT.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.BUILD_SCORER.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.NEXT_DOC.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.ADVANCE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.SCORE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownConstantScoreQuery.get(QueryTimingType.MATCH.toString() + "_count").longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.CREATE_WEIGHT.toString()).longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.BUILD_SCORER.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.NEXT_DOC.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.ADVANCE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.SCORE.toString()).longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.MATCH.toString()).longValue(), equalTo(0L));
|
|
|
-
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.CREATE_WEIGHT.toString() + "_count").longValue(), greaterThan(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.BUILD_SCORER.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.NEXT_DOC.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.ADVANCE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.SCORE.toString() + "_count").longValue(), equalTo(0L));
|
|
|
- assertThat(breakdownTermQuery.get(QueryTimingType.MATCH.toString() + "_count").longValue(), equalTo(0L));
|
|
|
-
|
|
|
- long rewriteTime = profiler.getRewriteTime();
|
|
|
- assertThat(rewriteTime, greaterThan(0L));
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
public void testNoScoring() throws IOException {
|
|
|
QueryProfiler profiler = new QueryProfiler();
|
|
|
searcher.setProfiler(profiler);
|