From 40b0dfddecb9597ab366a845f3ec8d9d1de5f5c9 Mon Sep 17 00:00:00 2001 From: kimchy Date: Fri, 5 Mar 2010 15:24:04 +0200 Subject: [PATCH] count should be cached as a filter --- .../index/shard/service/InternalIndexShard.java | 2 ++ .../test/integration/terms/TermsActionTests.java | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/shard/service/InternalIndexShard.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/shard/service/InternalIndexShard.java index c26260b1963..545519aee96 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/shard/service/InternalIndexShard.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/shard/service/InternalIndexShard.java @@ -323,6 +323,8 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I } } Query query = queryParser.parse(querySource); + // wrap it in filter, cache it, and constant score it + query = new ConstantScoreQuery(filterCache.cache(new QueryWrapperFilter(query))); query = filterByTypesIfNeeded(query, types); Engine.Searcher searcher = engine.searcher(); try { diff --git a/modules/test/integration/src/test/java/org/elasticsearch/test/integration/terms/TermsActionTests.java b/modules/test/integration/src/test/java/org/elasticsearch/test/integration/terms/TermsActionTests.java index 07b0edd9c12..cbca813dc2d 100644 --- a/modules/test/integration/src/test/java/org/elasticsearch/test/integration/terms/TermsActionTests.java +++ b/modules/test/integration/src/test/java/org/elasticsearch/test/integration/terms/TermsActionTests.java @@ -23,13 +23,13 @@ import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse; import org.elasticsearch.action.admin.cluster.health.ClusterHealthStatus; import org.elasticsearch.action.admin.indices.optimize.OptimizeResponse; import org.elasticsearch.action.admin.indices.status.IndexStatus; -import org.elasticsearch.action.terms.TermsRequest; import org.elasticsearch.action.terms.TermsResponse; import org.elasticsearch.client.Client; import org.elasticsearch.test.integration.AbstractServersTests; import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; +import static org.elasticsearch.action.terms.TermsRequest.SortType.*; import static org.elasticsearch.client.Requests.*; import static org.elasticsearch.util.json.JsonBuilder.*; import static org.hamcrest.MatcherAssert.*; @@ -134,7 +134,7 @@ public class TermsActionTests extends AbstractServersTests { assertThat(termsResponse.field("value").termsFreqs()[1].docFreq(), equalTo(2)); logger.info("Verify freqs (sort gy freq)"); - termsResponse = client.terms(termsRequest("test").fields("value").sortType(TermsRequest.SortType.FREQ)).actionGet(); + termsResponse = client.terms(termsRequest("test").fields("value").sortType(FREQ)).actionGet(); assertThat(termsResponse.successfulShards(), equalTo(indexStatus.shards().size())); assertThat(termsResponse.failedShards(), equalTo(0)); assertThat(termsResponse.fieldsAsMap().isEmpty(), equalTo(false)); @@ -148,7 +148,7 @@ public class TermsActionTests extends AbstractServersTests { assertThat(termsResponse.field("value").termsFreqs()[1].docFreq(), equalTo(1)); logger.info("Verify freq (size and sort by freq)"); - termsResponse = client.terms(termsRequest("test").fields("value").sortType(TermsRequest.SortType.FREQ).size(1)).actionGet(); + termsResponse = client.terms(termsRequest("test").fields("value").sortType(FREQ).size(1)).actionGet(); assertThat(termsResponse.successfulShards(), equalTo(indexStatus.shards().size())); assertThat(termsResponse.failedShards(), equalTo(0)); assertThat(termsResponse.fieldsAsMap().isEmpty(), equalTo(false)); @@ -160,7 +160,7 @@ public class TermsActionTests extends AbstractServersTests { assertThat(termsResponse.field("value").termsFreqs()[0].docFreq(), equalTo(2)); logger.info("Verify freq (minFreq with sort by freq)"); - termsResponse = client.terms(termsRequest("test").fields("value").sortType(TermsRequest.SortType.FREQ).minFreq(2)).actionGet(); + termsResponse = client.terms(termsRequest("test").fields("value").sortType(FREQ).minFreq(2)).actionGet(); assertThat(termsResponse.successfulShards(), equalTo(indexStatus.shards().size())); assertThat(termsResponse.failedShards(), equalTo(0)); assertThat(termsResponse.fieldsAsMap().isEmpty(), equalTo(false)); @@ -172,7 +172,7 @@ public class TermsActionTests extends AbstractServersTests { assertThat(termsResponse.field("value").termsFreqs()[0].docFreq(), equalTo(2)); logger.info("Verify freq (prefix with sort by freq)"); - termsResponse = client.terms(termsRequest("test").fields("value").sortType(TermsRequest.SortType.FREQ).prefix("bb")).actionGet(); + termsResponse = client.terms(termsRequest("test").fields("value").sortType(FREQ).prefix("bb")).actionGet(); assertThat(termsResponse.successfulShards(), equalTo(indexStatus.shards().size())); assertThat(termsResponse.failedShards(), equalTo(0)); assertThat(termsResponse.fieldsAsMap().isEmpty(), equalTo(false));