You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ja...@apache.org on 2022/11/30 09:06:38 UTC
[lucene] branch main updated: ExitableTerms to override getMin and getMax (#11985)
This is an automated email from the ASF dual-hosted git repository.
javanna pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/lucene.git
The following commit(s) were added to refs/heads/main by this push:
new 343d888b301 ExitableTerms to override getMin and getMax (#11985)
343d888b301 is described below
commit 343d888b3017f91522bf99df7d7484468cf4d1da
Author: Luca Cavanna <ja...@apache.org>
AuthorDate: Wed Nov 30 10:06:31 2022 +0100
ExitableTerms to override getMin and getMax (#11985)
ExitableTerms should not iterate through the terms to retrieve min and max when the wrapped implementation has the values cached (e.g. FieldsReader, OrdsFieldReader)
---
.../lucene/index/ExitableDirectoryReader.java | 10 ++++++++
.../lucene/index/TestExitableDirectoryReader.java | 29 ++++++++++++++++++++++
2 files changed, 39 insertions(+)
diff --git a/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java b/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java
index 09da414221a..cfde6605b08 100644
--- a/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java
+++ b/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java
@@ -703,6 +703,16 @@ public class ExitableDirectoryReader extends FilterDirectoryReader {
public TermsEnum iterator() throws IOException {
return new ExitableTermsEnum(in.iterator(), queryTimeout);
}
+
+ @Override
+ public BytesRef getMin() throws IOException {
+ return in.getMin();
+ }
+
+ @Override
+ public BytesRef getMax() throws IOException {
+ return in.getMax();
+ }
}
/**
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestExitableDirectoryReader.java b/lucene/core/src/test/org/apache/lucene/index/TestExitableDirectoryReader.java
index 03476c14a26..bd60fab2daa 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestExitableDirectoryReader.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestExitableDirectoryReader.java
@@ -279,6 +279,35 @@ public class TestExitableDirectoryReader extends LuceneTestCase {
directory.close();
}
+ public void testExitableTermsMinAndMax() throws IOException {
+ Directory directory = newDirectory();
+ IndexWriter w = new IndexWriter(directory, newIndexWriterConfig(new MockAnalyzer(random())));
+ Document doc = new Document();
+ StringField fooField = new StringField("foo", "bar", Field.Store.NO);
+ doc.add(fooField);
+ w.addDocument(doc);
+ w.flush();
+
+ DirectoryReader directoryReader = DirectoryReader.open(w);
+ for (LeafReaderContext lfc : directoryReader.leaves()) {
+ ExitableDirectoryReader.ExitableTerms terms =
+ new ExitableDirectoryReader.ExitableTerms(
+ lfc.reader().terms("foo"), infiniteQueryTimeout()) {
+ @Override
+ public TermsEnum iterator() {
+ fail("min and max should be retrieved from block tree, no need to iterate");
+ return null;
+ }
+ };
+ assertEquals("bar", terms.getMin().utf8ToString());
+ assertEquals("bar", terms.getMax().utf8ToString());
+ }
+
+ w.close();
+ directoryReader.close();
+ directory.close();
+ }
+
private static QueryTimeout infiniteQueryTimeout() {
return () -> false;
}