You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by iv...@apache.org on 2020/03/24 14:28:55 UTC
[lucene-solr] branch branch_8x updated: LUCENE-9287:
UsageTrackingQueryCachingPolicy no longer caches DocValuesFieldExistsQuery
(#1374)
This is an automated email from the ASF dual-hosted git repository.
ivera pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/branch_8x by this push:
new 955c67d LUCENE-9287: UsageTrackingQueryCachingPolicy no longer caches DocValuesFieldExistsQuery (#1374)
955c67d is described below
commit 955c67d066f766f16f41bc828a1fca6275387b63
Author: Ignacio Vera <iv...@apache.org>
AuthorDate: Tue Mar 24 15:26:56 2020 +0100
LUCENE-9287: UsageTrackingQueryCachingPolicy no longer caches DocValuesFieldExistsQuery (#1374)
---
lucene/CHANGES.txt | 2 ++
.../apache/lucene/search/UsageTrackingQueryCachingPolicy.java | 5 +++++
.../lucene/search/TestUsageTrackingFilterCachingPolicy.java | 9 +++++++++
3 files changed, 16 insertions(+)
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 31be94b..b9f9c0e 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -29,6 +29,8 @@ Optimizations
* LUCENE-8103: DoubleValuesSource and QueryValueSource now use a TwoPhaseIterator if one is provided by the Query.
(Michele Palmia, David Smiley)
+* LUCENE-9287: UsageTrackingQueryCachingPolicy no longer caches DocValuesFieldExistsQuery. (Ignacio Vera)
+
Bug Fixes
---------------------
* LUCENE-9259: Fix wrong NGramFilterFactory argument name for preserveOriginal option (Paul Pazderski)
diff --git a/lucene/core/src/java/org/apache/lucene/search/UsageTrackingQueryCachingPolicy.java b/lucene/core/src/java/org/apache/lucene/search/UsageTrackingQueryCachingPolicy.java
index c16d7f2..4a27ec3 100644
--- a/lucene/core/src/java/org/apache/lucene/search/UsageTrackingQueryCachingPolicy.java
+++ b/lucene/core/src/java/org/apache/lucene/search/UsageTrackingQueryCachingPolicy.java
@@ -60,6 +60,11 @@ public class UsageTrackingQueryCachingPolicy implements QueryCachingPolicy {
return true;
}
+ if (query instanceof DocValuesFieldExistsQuery) {
+ // We do not bother caching DocValuesFieldExistsQuery queries since they are already plenty fast.
+ return true;
+ }
+
if (query instanceof MatchAllDocsQuery) {
// MatchAllDocsQuery has an iterator that is faster than what a bit set could do.
return true;
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestUsageTrackingFilterCachingPolicy.java b/lucene/core/src/test/org/apache/lucene/search/TestUsageTrackingFilterCachingPolicy.java
index 56d352d..ab6106e 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestUsageTrackingFilterCachingPolicy.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestUsageTrackingFilterCachingPolicy.java
@@ -54,6 +54,15 @@ public class TestUsageTrackingFilterCachingPolicy extends LuceneTestCase {
assertFalse(policy.shouldCache(q));
}
+ public void testNeverCacheDocValuesFieldExistsFilter() throws IOException {
+ Query q = new DocValuesFieldExistsQuery("foo");
+ UsageTrackingQueryCachingPolicy policy = new UsageTrackingQueryCachingPolicy();
+ for (int i = 0; i < 1000; ++i) {
+ policy.onUse(q);
+ }
+ assertFalse(policy.shouldCache(q));
+ }
+
public void testBooleanQueries() throws IOException {
Directory dir = newDirectory();
RandomIndexWriter w = new RandomIndexWriter(random(), dir);